php curl传输FTP后图像损坏

php curl传输FTP后图像损坏,php,curl,ftp,Php,Curl,Ftp,我使用下面的代码来传输图像,它正在工作,只是传输后jpg被破坏了。表示图像格式无效,显示模糊图像 我尝试使用没有curl的常规php,得到了相同的结果 有人知道为什么我尝试的任何东西都会起作用,但会破坏图像。jpg $curl = curl_init(); $fh = fopen("test.jpg", 'w'); curl_setopt($curl, CURLOPT_URL, "ftp://{$serverInfo['user']}: {$servererInfo['password']}

我使用下面的代码来传输图像,它正在工作,只是传输后jpg被破坏了。表示图像格式无效,显示模糊图像

我尝试使用没有curl的常规php,得到了相同的结果

有人知道为什么我尝试的任何东西都会起作用,但会破坏图像。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);`

存在一些问题

您应该以二进制模式打开文件进行写入,也就是说

$fh = fopen("test.jpg", 'wb');
curl_exec返回bool(success),而不是文件的内容,应该将文件传递给CURLOPT_文件

您应该使用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);

尝试
$result=file_get_内容(“ftp://{$serverInfo['user']}:{$servererInfo['password']}}{$serverInfo['ftp1.server.com']}/{$serverInfo['For_Web/Web image/Full Size/00-99/file']})
可能将
CURLOPT\u binarytranfer
添加到您的
curl\u setopt()
我尝试使用二进制模式,但仍然存在相同的问题。这是我的代码$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 image/Full Size/00-99/73-3624.jpg']);curl_setopt($curl,CURLOPT_BINARYTRANSFER,1)$结果=curl\u exec($curl);fwrite($fh,$result);fclose($fh);curl_close($curl);