2013-10-01 13 views
92

użyłem tej składni, aby umieścić plik wraz z kilkoma parametrami:Jaki jest właściwy sposób POST wieloczęściowy/formularz danych za pomocą curl?

curl -v -include --form "key1=value1" --form upload=localfilename URL 

Plik ma około 500K wielkości. Przede wszystkim widzę długość treści na poziomie 254 po stronie nadawczej. Później długość odpowiedzi serwera wynosi 0. Gdzie się mylę?

Oto pełny ślad polecenia.

* 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 
+0

możliwy duplikat [ Używanie curl do przesyłania danych POST z plikami] (http://stackoverflow.com/questions/12667797/using-curl-to-upload-post-data-with-files) –

Odpowiedz

146

Poniższa składnia rozwiązuje to dla ciebie:

curl -v -F key1=value1 -F [email protected] URL 
+14

Zamiast --form, można użyć -F (wymagane wielkie litery) dla krótszej linii poleceń. –

+0

co z Windows i curl.exe? – Piotr

+0

co z wieloma załącznikami? – hellboy

7

załadować plik, używając pozwijane w Windows okazało się, że droga wymaga uciekł cudzysłowów

np

curl -v -F '[email protected]\"C:/myfile.txt\"' URL 
-1

W systemie Windows 10, curl 7.28.1 wewnątrz powershell, znalazłem następujące pracować dla mnie:

$filePath = "c:\temp\dir with spaces\myfile.wav" 
$curlPath = ("[email protected]" + $filePath) 
curl -v -F $curlPath URL 
Powiązane problemy