在linux命令行使用curl –datacurlhttp后期file upload

我一直在尝试在linux命令行中使用以下命令将file upload到服务器:

curl -v --data 'file=@/var/www/fbapp/images/registration.png' http://myserver/xmltest/curlupload.php 

但它不会将file upload到服务器,即使它正在发送回应。

虽然如果我使用这个命令,它会上传文件并发回响应:

 curl -v -F 'filename=registration.png' -F 'file=@/var/www/fbapp/images/registration.png' http://myserver/xmltest/curlupload.php 

但是我想要curl –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 

如何使用curl –data上传文件?

你通常不能简单地选择-F或-d(–data)。 将接收您的文章的Web服务器预计的格式之一。 如果您要提交的表单使用“multipart / form-data”类型,那么只有您必须使用-F类型。 如果不是,则应该使用-d,然后使用“application / x-www-form-urlencoded”类型进行发布。

带有-F的multipart / formposts使用特定的帖子格式,用Mime-headers分隔不同的部分,每个部分都有自己的一套头文件。

-d只是正在发送的服务器解释/解码的原始数据。

在卷曲FAQ中提到。

(但是,由于您在这种情况下编写了PHP代码,您只需决定要接受哪种POST方法,然后使用curl命令行即可)。