web-dev-qa-db-fra.com

Comment envoyer le contenu d'un fichier en tant qu'entité corporelle à l'aide de cURL

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 de type info comme --data </path/to/filename> --data-urlencode </path/to/filename> etc ... le fichier est toujours joint. J'en ai besoin en tant qu'entité physique.

170
Roy Hinkley

Je crois que vous recherchez la syntaxe @filename, par exemple:

bande de nouvelles lignes

curl --data "@/path/to/filename" http://...

garder de nouvelles lignes

curl --data-binary "@/path/to/filename" http://...

=====

curl enlèvera toutes les nouvelles lignes du fichier. Si vous souhaitez envoyer le fichier avec des nouvelles lignes intactes, utilisez --data-binary à la place de --data.

290
Jeffrey Froman

Je sais que la question a été résolue, 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 ne fonctionnait pas. Quoiqu'il en soit, c'est ce qui a finalement fait l'affaire pour moi:

curl -X POST -H --silent --data-urlencode "payload={\"text\": \"$(cat file.txt | sed "s/\"/'/g")\"}" https://hooks.slack.com/services/XXX
8
cookiedough