Envoyer une requête POST avec des données spécifiées dans un 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" 

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 affiche tous les en-têtes pour que vous puissiez voir ce qui se passe, et -X POST indique explicitement qu’il s’agit d’une publication. Les deux peuvent être omis en toute sécurité sans modifier le comportement sur le fil. Le chemin d’access au fichier doit être précédé d’un symbole @ , afin que curl sache lire dans un fichier.

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

Tout ce que vous devez faire est d’avoir l’argument --data commençant 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 vous feriez quelque chose comme:

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

Le stuff.xml fichier stuff.xml peut être remplacé par un chemin d’access relatif ou complet au fichier: @../xml/stuff.xml , @/var/tmp/stuff.xml , …

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

La plupart des réponses sont parfaites ici, mais quand j’ai atterri ici pour mon problème particulier, je dois télécharger binary file (tableur XLSX) à l’aide de POST, il manque une chose, c.-à-d. former des éléments de données , comme des commentaires à classer ou des balises à classer, etc., comme c’était mon cas. Par conséquent, je voudrais l’append ici car c’était mon cas d’utilisation, afin que cela 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