Я использую следующий код для передачи изображения, и он работает, за исключением того, что jpg поврежден после передачи. Указывает неверный формат изображения и показывает размытое изображение.
Я попытался использовать обычный 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);