我正在使用以下代码传输图像,它可以正常工作,但传输后 jpg 已损坏。是说无效的图像格式并显示模糊的图像。
我尝试使用不带 curl 的常规 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);`
最佳答案
有几个问题;
您应该以二进制模式打开文件进行写入,即;
$fh = fopen("test.jpg", 'wb');
curl_exec 返回一个 bool 值(成功),而不是文件的内容,文件应该传递给 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);
关于php - php curl 传输 FTP 后图像损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8912058/