2012-01-18 64 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

为答案增加了一个工作示例。 –