php - php curl 传输 FTP 后图像损坏

标签 php curl ftp

我正在使用以下代码传输图像,它可以正常工作,但传输后 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/

相关文章:

php - MySQL 数据库问号而不是希伯来语字符..?

php - 如何在 PHP Phalcon Controller 中包含文件

php - 无法添加 PPA : 'ppa:ondrej/php5-5.6'

java - 在 Javascript 中请求 URL,使用 Java Applet 获取 URL 内容,返回 Javascript?

c# - ftp 子文件夹下载递归功能不起作用

使用 NSURLSession 的 iOS FTP 上传

php - 在 nginx 中运行 PHP 的虚拟目录

php - cURL 没有返回任何东西?

linux - grep 和 curl 命令

用于递归搜索 FTP 特定文件名且超过 24 小时的 python 脚本