2013-01-12 108 views
0

我有捲曲一個代碼,應該從URL複製圖像到我的服務器:cURL不工作,但file_put_contents()呢?

$curl = curl_init($url); 
$file = fopen($imageURL , 'wb'); 
curl_setopt($curl , CURLOPT_FILE , $file); 
curl_setopt($curl , CURLOPT_HEADER , true); 
curl_setopt($curl , CURLOPT_FOLLOWLOCATION , true); 
curl_exec($curl); 
curl_close($curl); 
fclose($file);

它不能正常工作,但file_put_contents()一樣。我的cURL代碼有什麼問題嗎?

+0

你確定你的捲曲安裝在你的環境?它不是標準的,用phpinfo()檢查; – Jonathan

+0

你確定你使用的是CURLOPT_FILE嗎?你是否應該傳遞一個文件資源或文件名? –

回答

1

不設置CURLOPT_HEADER爲真。這將在的輸出中包含標頭。因此,您的圖片文件將包含響應標頭 + 圖片數據。刪除該行或將其設置爲false

4

有多種解決方案,cURL可能不是最好的。

$remote_img = 'http://www.somwhere.com/images/image.jpg'; 
$img = imagecreatefromjpeg($remote_img); 
$path = 'images/'; 
imagejpeg($img, $path); 

將很好地工作,但如果你是在捲曲設置,試試這個:

$ch = curl_init ($img); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); 
$rawdata=curl_exec($ch); 
curl_close ($ch); 
if(file_exists($fullpath)){ 
    unlink($fullpath); 
} 
$fp = fopen($fullpath,'x'); 
fwrite($fp, $rawdata); 
fclose($fp); 

這應該正常工作。

祝你好運!

+0

使用gd將會修改圖像的質量。那不是原始圖像 –

+2

@ shiplu.mokadd.im他沒有提及它應該是 - 這是一個很好的功能來運行安全性,因爲如果用戶輸入它,他在抓取的內容在技術上可能是惡意腳本。 – Jonathan

相關問題