2012-08-14 64 views
0

我上传文件到远程服务器。代码:PHP cURL文件上传附加信息到文件

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, ZDURL.$url); 
    curl_setopt($ch, CURLOPT_USERPWD, ZDUSER."/token:".ZDAPIKEY); 

    $params = array('file_name' => '@'.$temp_file); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/plain")); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

    curl_setopt($ch, CURLINFO_HEADER_OUT, 0); 
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    $result = curl_exec($ch); 
    $error = curl_error($ch); 
    curl_close($ch); 

但在上传文件的顶部显示的信息:

------------------------------cfbe90a606af 
Content-Disposition: form-data; name="file_name"; filename="C:\Program Files\xampp\tmp\phpF576.tmp" 
Content-Type: application/octet-stream 

图像有由于这除了文字

+0

'内容类型:text/plain'是没有意义在这里给你所谈论的图像(和一般将数组传递给'CURLOPT_POSTFIELDS'时)。你想做什么,模仿表单提交,发布原始图像或什么? – DaveRandom 2012-08-14 08:56:15

+0

发布原始图像。我使用这个示例http://dtbaker.com.au/random-bits/uploading-a-file-using-curl-in-php.html – 2012-08-14 09:56:41

回答

0

这听起来像你将数据发送到URL格式错误预期只是请求正文中的文件,而不是表单提交。达到此目的的最佳方式是CURLOPT_INFILE。试试这个代码:

试试这个

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, ZDURL.$url); 
curl_setopt($ch, CURLOPT_USERPWD, ZDUSER."/token:".ZDAPIKEY); 

// You need to detect the correct content type for the file you are sending. 
// Although based on the current problem you have, it looks like the server 
// ignores this anyway 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: image/jpeg")); 

// Send the raw file in the body with no other data 
$fp = fopen($temp_file, 'r'); 
curl_setopt($ch, CURLOPT_INFILE, $fp); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLINFO_HEADER_OUT, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 

$result = curl_exec($ch); 
$error = curl_error($ch); 

curl_close($ch); 
fclose($fp); 
+0

谢谢!工作代码: – 2012-08-14 11:05:59