web-dev-qa-db-fra.com

Envoyer POST Demande avec les données spécifiées dans le fichier via Curl

Je dois faire une demande POST via Curl à partir de la ligne de commande. Les données pour cette demande se trouvent dans un fichier. Je sais que via PUT, cela pourrait être fait avec l'option --upload-file.

curl Host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
160
user253202

Vous recherchez l'argument --data-binary:

curl -i -X POST Host:port/post-file \
  -H "Content-Type: text/xml" \
  --data-binary "@path/to/file"

Dans l'exemple ci-dessus, -i imprime tous les en-têtes afin que vous puissiez voir ce qui se passe, et -X POST précise que ceci est une publication. Les deux peuvent être omis en toute sécurité sans changer le comportement sur le fil. Le chemin d'accès au fichier doit être précédé d'un symbole @ afin que curl sache lire à partir d'un fichier.

254
Richard J

Je dois faire une demande POST via Curl à partir de la ligne de commande. Les données pour cette demande se trouvent dans un fichier ...

Tout ce que vous avez à faire est de faire commencer l'argument --data par un @:

curl -H "Content-Type: text/xml" --data "@path_of_file" Host:port/post-file -path

Par exemple, si vous avez les données dans un fichier appelé stuff.xml, procédez comme suit:

curl -H "Content-Type: text/xml" --data "@stuff.xml" Host:port/post-file-path

Le nom de fichier stuff.xml peut être remplacé par un chemin relatif ou complet vers le fichier: @../xml/stuff.xml, @/var/tmp/stuff.xml, ...

20
Gray

Si vous utilisez des données de formulaire pour télécharger un fichier, dans lequel un nom de paramètre doit être spécifié, vous pouvez utiliser:

curl -X POST -i -F parametername=@filename Host:port/xxx

9
Lucas Liu

La plupart des réponses sont parfaites ici, mais lorsque j’atterris ici pour mon problème particulier, je dois télécharger un fichier binaire (feuille de calcul XLSX) en utilisant la méthode POST, je vois une chose manquant , c’est généralement son juste le fichier que vous chargez, vous pouvez avoir plusieurs éléments de données de formulaire , comme commentaire dans fichier ou balises dans fichier etc comme c'était mon cas. Par conséquent, je voudrais l'ajouter ici car c'était mon cas d'utilisation, afin qu'il puisse aider les autres. 

curl -POST -F comment=mycomment -F file_type=XLSX -F file_data=@/your/path/to/file.XLSX http://yourhost.example.com/api/example_url
1
Red Boy