我正在使用以下代码来传输图像,它正在工作,只是 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)