Qu'est-ce que le droit de publier des multipart/form-data à l'aide de curl?
J'ai utilisé cette syntaxe pour afficher un fichier avec quelques paramètres:
curl -v -include --form "key1=value1" --form upload=localfilename URL
Le fichier est d'environ 500K en taille. Tout d'abord, je vois le contenu de la longueur à 254 sur le côté émission. Plus tard, la réponse du serveur du contenu de la longueur est de 0.
Où vais-je tort?
Voici la trace de la commande.
* Couldn't find host xxx.xxx.xxx.xxx in the _netrc file; using defaults
* About to connect() to xxx.xxx.xxx.xxx port yyyy (#0)
* Trying xxx.xxx.xxx.xxx...
* Adding handle: conn: 0x4b96a0
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x4b96a0) send_pipe: 1, recv_pipe: 0
* Connected to xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx) port yyyy (#0)
* POST /zzzzzz/UploadFile HTTP/1.1
* User-Agent: curl/7.32.0
* Host: xxx.xxx.xxx.xxx:yyyy
* Accept: */*
* Content-Length: 254
* Expect: 100-continue
* Content-Type: multipart/form-data; boundary=------------------------948a6137eef50079
*
* HTTP/1.1 100 Continue
* HTTP/1.1 100 Continue
* HTTP/1.1 200 OK
* HTTP/1.1 200 OK
* Server Apache-Coyote/1.1 is not blacklisted
* Server: Apache-Coyote/1.1
* Server: Apache-Coyote/1.1
* Added cookie JSESSIONID="C1D7DD042E250211D9DEA82688876F88" for domain xxx.xxx.xxx.xxx, path /zzzzz/, expire 0
* Set-Cookie: JSESSIONID=C1D7DD042E250211D9DEA82688876F88; Path=/zzzzzz/;
* HttpOnly
* Set-Cookie: JSESSIONID=C1D7DD042E250211D9DEA82688876F88; Path=/zzzzzz/; HttpOnly
* Content-Type: text/html;charset=ISO-8859-1
Content-Type: text/html;charset=ISO-8859-1
* Content-Length: 0
* Content-Length: 0
* Date: Tue, 01 Oct 2013 11:54:24 GMT
* Date: Tue, 01 Oct 2013 11:54:24 GMT
* Connection #0 to host xxx.xxx.xxx.xxx left intact
- double possible de Utilisation de curl pour télécharger publier des données avec les fichiers
Vous devez vous connecter pour publier un commentaire.
La syntaxe suivante correctifs pour vous:
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW'
pour télécharger un fichier à l'aide de curl dans Windows, j'ai trouvé que le chemin d'accès nécessite échappé guillemets
par exemple
"
, qui est dans mon cas sur Mac je devrais l'envoyer commecurl -X POST -F key1=value1 -F 'image=@"/Users/ivkremer/Downloads/file name.jpg"'
;C'est ce qui a fonctionné pour moi
Sur Windows 10, curl 7.28.1 dans powershell, j'ai trouvé la suite de travailler pour moi:
J'ai eu du mal à l'envoi d'un multipart requête HTTP PUT avec
curl
à Java backend. J'ai simplement essayéet le contenu du fichier a été
mais j'ai toujours eu une erreur que la frontière était incorrecte. Après quelques Java backend de débogage j'ai trouvé que l'implémentation de Java a été l'ajout d'un
\r\n--
comme préfixe à la limite, si après changement de mon fichier d'entrée pourtout fonctionne bien!
tl;dr
Ajouter un saut de ligne (CRLF
\r\n
) au début de la multipart limite de contenu et--
au début de l'limites et essayer de nouveau.Peut-être que vous envoyez une demande à un Java backend qui a besoin de ces changements dans la frontière.