J'ai besoin de faire une demande POST via Curl à partir de la ligne de commande. Les données de cette demande se trouvent dans un fichier. Je sais que via PUT, cela pourrait être fait avec l' --upload-file
option.
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
Réponses:
Vous recherchez l'
--data-binary
argument:Dans l'exemple ci-dessus,
-i
imprime tous les en-têtes pour que vous puissiez voir ce qui se passe et-X POST
explicite qu'il s'agit d'un article. Ces deux éléments peuvent être supprimés en toute sécurité sans modifier le comportement du câble. Le chemin d'accès au fichier doit être précédé d'un@
symbole, donccurl
sait lire à partir d'un fichier.la source
.xml
@
partie est extrêmement importante!-d
entraînera la suppression descurl
nouvelles lignes, mais--data-binary
ce ne sera pas le cas.Tout ce que vous devez faire est de
--data
commencer l' argument par@
:Par exemple, si vous avez les données dans un fichier appelé,
stuff.xml
vous feriez quelque chose comme:Le
stuff.xml
nom de fichier peut être remplacé par un chemin complet ou relatif au fichier:@../xml/stuff.xml
,@/var/tmp/stuff.xml
, ...la source
--data "name@stuff"
.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" -F "additional_parm=param2" host:port/xxx
la source
parametername=
m'a vraiment aidé :)La plupart des réponses sont parfaites ici, mais quand j'ai atterri 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 manquante , c'est-à-dire que ce n'est généralement pas seulement le fichier que vous chargez, vous pouvez avoir plus d' éléments de données de formulaire , comme des commentaires dans un fichier ou des balises dans un 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.
la source
J'ai dû utiliser une connexion HTTP, car sur HTTPS il y a une limite de taille de fichier par défaut.
https://techcommunity.microsoft.com/t5/IIS-Support-Blog/Solution-for-Request-Entity-Too-Large-error/ba-p/501134
la source