Изображение повреждено после передачи php curl FTP - PullRequest
3 голосов
/ 18 января 2012

Я использую следующий код для передачи изображения, и он работает, за исключением того, что JPG поврежден после передачи. Это говорит о неправильном формате изображения и показывает размытое изображение.

Я попытался использовать обычный php без curl и получить те же результаты.

Кто-нибудь знает, почему все, что я пробую, работает, но портит изображение. 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);`

1 Ответ

3 голосов
/ 18 января 2012

Есть несколько проблем;

Вы должны открыть свой файл для записи в двоичном режиме, то есть;

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...