2012-01-18 68 views
3

我使用下面的代碼來傳輸圖像,它是工作,除了jpg傳輸後損壞。是說無效的圖像格式並顯示模糊的圖像。圖像損壞後,PHP捲曲傳輸FTP

我嘗試使用普通的PHP沒有捲曲,並得到相同的結果。

有誰知道爲什麼無論我嘗試的作品,但破壞了image.jpg的

$curl = curl_init(); 
$fh = fopen("test.jpg", 'w'); 
curl_setopt($curl, CURLOPT_URL, "ftp://{$serverInfo['user']}: {$servererInfo['password']}@{$serverInfo['ftp1.server.com']}/{$serverInfo['For_Web/Web Images/Full Size/00-99/file']}"); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec($curl); 
fwrite($fh, $result); 
fclose($fh); 
curl_close($curl);` 
+0

嘗試'$結果=的file_get_contents(「FTP:// {$ serverInfo [ '用戶']}:{$ servererInfo [ '密碼']} @ {$ serverInfo [ 'ftp1.server.com'] }/{$ serverInfo ['For_Web/Web Images/Full Size/00-99/file']}「);' – CSharpRU

+0

可能會將'CURLOPT_BINARYTRANSFER'添加到'curl_setopt()' – dnagirl

回答

3

有幾個問題;

你應該打開你的文件以二進制模式寫入,也就是說;

$fh = fopen("test.jpg", 'wb'); 

curl_exec返回一個布爾值(成功),而不是文件內容,文件應改爲傳遞給CURLOPT_FILE。

您應該使用CURLOPT_USERPWD設置用戶名/密碼,但不確定是否可以使URL的方式工作。

您應該設置CURLOPT_BINARYTRANSFER。

工作樣本;

$curl = curl_init(); 
$fh = fopen("fips.exe", 'wb'); 
curl_setopt($curl, CURLOPT_URL, 'ftp://ftp.sunet.se/pub/FreeBSD/tools/fips.exe'); 
curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_FILE, $fh); 
curl_setopt($curl, CURLOPT_USERPWD, 'anonymous:olle'); 
$result = curl_exec($curl); 
fclose($fh); 
curl_close($curl); 
+0

我試過使用二進制模式,同樣的問題。這裏是我的代碼 – user1156446

+0

$ curl = curl_init(); $ fh = fopen(「test.jpg」,'wb'); curl_setopt($ curl,CURLOPT_URL,「ftp:// {$ serverInfo ['wps']}:{$ servererInfo ['wps-pass']} @ {$ serverInfo ['ftp1.wpsstatic.com']}/{ $ serverInfo ['For_Web/Web Images/Full Size/00-99/73-3624.jpg']}「); curl_setopt($ curl,CURLOPT_BINARYTRANSFER,1); $ result = curl_exec($ curl); fwrite($ fh,$ result); fclose($ fh); curl_close($ curl); – user1156446

+0

爲答案增加了一個工作示例。 –