311 votes

Comment envoyer le contenu d'un fichier en tant qu'entité de corps en utilisant cURL

J'utilise l'utilitaire en ligne de commande cURL pour envoyer un HTTP POST à un service web. Je veux inclure le contenu d'un fichier comme entité de corps du POST. J'ai essayé d'utiliser -d /chemin/vers/nomdefichier ainsi que d'autres variantes avec des informations de type comme --data /chemin/vers/nomdefichier> --data-urlencode /chemin/vers/nomdefichier etc... le fichier est toujours attaché. Je le veux comme entité de corps.

516voto

Jeffrey Froman Points 4843

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

supprimer les sauts de ligne

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

garder les sauts de ligne

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

curl va supprimer tous les sauts de ligne du fichier. Si vous souhaitez envoyer le fichier en conservant les sauts de ligne, utilisez --data-binary à la place de --data

34voto

cookiedough Points 1571

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, voici ce qui a finalement fonctionné pour moi :

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

17voto

wbswjc Points 461

Dans mon cas, @ a causé un genre de problème d'encodage, je préfère toujours ma méthode précédente :

curl -d "$(cat /path/to/file)" https://example.com

-6voto

user17221689 Points 1

Curl https://upload.box.com/api/2.0/files/3300/content -H "Authorization: Bearer $access_token" -F file=@"C:\Crystal Reports\Crystal Reports\mysales.pdf"

curl https://upload.box.com/api/2.0/files/3300/content -H "Authorization: Bearer $access_token" -F file=@"C:\Crystal Reports\Crystal Reports\mysales.pdf"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X