2014-11-06 3 views
2

나는 리눅스 명령 줄에서이 명령을 사용하여 서버에 파일 업로드를 시도하고있다 :컬 HTTP 포스트 파일 업로드

curl -v --data '[email protected]/var/www/fbapp/images/registration.png' http://myserver/xmltest/curlupload.php 

을하지만 파일을 업로드하지 않습니다 서버에 응답을 보냈지 만

내가이 명령을 사용하는 경우이 파일을 업로드하고 다시 응답을 보냅니다 있지만 :

curl -v -F 'filename=registration.png' -F '[email protected]/var/www/fbapp/images/registration.png' http://myserver/xmltest/curlupload.php 

을하지만이 컬 --data 형식 자체에 명령을 원했다.

이 서버 내 PHP 코드 :

<?php 
$uploadpath = "images/"; 
$filedata = $_FILES['file']['tmp_name']; 
echo "filedata= ".$filedata; 
if ($filedata != '') 
copy($filedata,$uploadpath."1.png"); 
echo "success"; 
?> 

그리고 이것은 내가 돌아올 것을 헤더 응답입니다 :

> POST /xmltest/curlupload.php HTTP/1.1 
> User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3 
> Host: myserver 
> Accept: */* 
> Content-Length: 44 
> Content-Type: application/x-www-form-urlencoded 
> 
* upload completely sent off: 44out of 44 bytes 
< HTTP/1.1 200 OK 
< Date: Thu, 06 Nov 2014 07:01:56 GMT 
< Server: Apache 
< Vary: Accept-Encoding 
< Transfer-Encoding: chunked 
< Content-Type: text/html 
< 
* Connection #0 to host myserver left intact 
* Closing connection #0 
filedata= success 

은 어떻게 사용할 수 --data 업로드 말림 파일?

+0

가능한 중복 CURL을 통해 파일에 지정된 데이터로 요청] (http://stackoverflow.com/questions/6408904/how-to-send-post-request-with-data-specified-in-file-via-curl) – Jens

답변

7

일반적으로 원하는 경우 간단히 -F 또는 -d (- 데이터)를 선택할 수 없습니다. 귀하의 게시물을 수신 할 웹 서버는 해당 형식 중 하나를 필요로합니다. 제출하려는 양식에 'multipart/form-data'유형이 사용되는 경우에만 -F 유형을 사용해야합니다. 그렇지 않은 경우 -d를 사용하여 'application/x-www-form-urlencoded'유형의 게시를 야합니다.

-F와 함께 multipart/formposts는 다른 부분을 분리하는 Mime 헤더와 헤더의 고유 한 형식을 가진 각 부분의 특별한 형식을 사용합니다.

-d는 서버가 해석/해석하기 위해 전송되는 원시 데이터입니다.

curl FAQ에서 언급 됨.

(단,이 경우에 PHP 코드를 작성하기 때문에, 당신은 당신이 동의 한 다음 컬 명령 줄 것을 사용하도록 할 POST 방법을 결정해야합니다.) [보내는 방법을 POST의

+1

" 원하는대로 PHP 또는 -d (--data)를 선택하십시오. PHP 코드를 수정할 수 있기 때문에 가능합니다. –