J'utilise l'utilitaire de ligne de commande cURL pour envoyer HTTP POST à un service Web. Je souhaite inclure le contenu d'un fichier en tant qu'entité de corps du POST. J'ai essayé d'utiliser -d </path/to/filename>
ainsi que d'autres variantes avec des informations de type comme --data </path/to/filename> --data-urlencode </path/to/filename>
etc ... le fichier est toujours joint. J'en ai besoin comme entité corporelle.
208
cat file.txt | curl --data "@-" `(< url.txt )`
@-
dit à curl de lire depuis stdin. Vous pouvez également utiliser la redirection(< x.txt )
pour mettre ce que vous voulez. Si vous utilisez bash.--data-binary
à la place de--data
.name:value
paires, comme un nom d'utilisateur et un mot de passe, ajoutez les en-têtes nécessaires qui correspondent à ce que le service attend:--header: "<header_name>:<header_value>"
comme une seule chaîne.Je sais que la question a été répondue, mais dans mon cas, j'essayais d'envoyer le contenu d'un fichier texte à l' API Slack Webhook et pour une raison quelconque, la réponse ci-dessus n'a pas fonctionné. Quoi qu'il en soit, c'est ce qui a finalement fait l'affaire pour moi:
la source
curl: argument list too long
dans ce cas, la réponse acceptée est le sauveur de viecurl --data "@/path/to/filename" http://...
Dans mon cas,
@
causé une sorte de problème d'encodage, je préfère toujours mon ancienne méthode:la source