2011-09-12 207 views
0

我想用php cURL上傳圖片。但有些事情是錯誤的。cURL文件上傳問題

這是後數據

-----------------------------192153227918513 
Content-Disposition: form-data; name="resimbaslik" 

CCClient 
-----------------------------192153227918513 
Content-Disposition: form-data; name="imgfile"; filename="clinteastwoodo.jpg" 
Content-Type: image/jpeg 

,我試圖上傳我的照片與此PHP代碼

$postfields = array(); 
$postfields ["resimbaslik"] = "CCClient"; 
$postfields ["imgfile"] = "filename=\"clinteastwoodo.jpg\""; 
$referer = "http://www.example.com/ex1.php"; 
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/example.php'); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 
curl_setopt($ch, CURLOPT_REFERER, $referer); 
$result = curl_exec ($ch); 

而且它給我417 - Expectation Failed錯誤。 圖片與我的.php文件在同一個目錄中。

有人可以幫我解決它嗎?

謝謝。

回答

1

服務器是否正嘗試發佈到Lighttpd? Lighty在處理期望標題時存在一個已知的問題,這就造成了這種情況。更多信息可以在這裏找到:http://redmine.lighttpd.net/issues/1017

在從上面的鏈接的評論,一個簡單的辦法是指出了PHP和捲曲:

<?php 
$ch = curl_init(); 
curl_setopt($ch,CURLOPT_HTTPHEADER,array("Expect:")); 
//Other setopt, execute etc... 
?> 

您需要設置的期望頭空值。在上面的代碼中,您只需添加curl_setopt行。類似這樣的:

$postfields = array(); 
$postfields ["resimbaslik"] = "CCClient"; 
$postfields ["imgfile"] = "filename=\"clinteastwoodo.jpg\""; 
$referer = "http://www.example.com/ex1.php"; 
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/example.php'); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 
curl_setopt($ch, CURLOPT_REFERER, $referer); 
curl_setopt($ch,CURLOPT_HTTPHEADER,array("Expect:")); // << add this line. 
$result = curl_exec ($ch); 
+0

No not Lighttp。它無法解決我的問題。我之前嘗試過。我該如何使用這個帖子的標題? –

+0

$ postfields [「imgfile」] =「文件名= \」clinteastwoodo.jpg \「」; 沒有@用於文件上傳的字段?另外,$ postfield ['imgfile']將是表單中的字段名,所以「filename =沒有意義。 – erm3nda