Загрузка изображения с помощью cURL
https://cdni.rt.com/deutsch/images/2018.04/article/5ac34e500d0403503d8b4568.jpg
при сохранении этого изображения вручную из браузера на локальный компьютер размер, отображаемый системой, составляет 139 880 байт.
При загрузке с помощью cURL файл кажется поврежденным и не считается допустимым изображением.
его размер при загрузке с использованием cURL составляет 139 845, что меньше размера при загрузке вручную
углубляясь в проблему, обнаружил, что сервер возвращает длину содержимого в заголовках ответа как
content-length: 139845
Эта длина идентична загруженной cURL, поэтому я подозревал, что cURL закрывает передачу после достижения сервером предполагаемой (возможно, неправильной) длины.
Есть ли способ заставить cURL полностью загрузить файл, даже если заголовок длины содержимого неверен
Используемый код:
//curl ini
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT,20);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.bing.com/');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8');
curl_setopt($ch, CURLOPT_MAXREDIRS, 5); // Good leeway for redirections.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // Many login forms redirect at least once.
curl_setopt($ch, CURLOPT_COOKIEJAR , "cookie.txt");
//curl get
$x='error';
$url='https://cdni.rt.com/deutsch/images/2018.04/article/5ac34e500d0403503d8b4568.jpg';
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_URL, trim($url));
$exec=curl_exec($ch);
$x=curl_error($ch);
$fp = fopen('test.jpg','x');
fwrite($fp, $exec);
fclose($fp);
strlen()
полученных данных? Подумайте также об использовании флагаb
при открытии выходного файла! - person Ulrich Eckhardt   schedule 03.04.2018curl
иwget
из командной строки (передавая плоскость, чтобы игнорировать заголовок длины содержимого), и оба приводят к файлу длиной 139 845 байт. Я начинаю задаваться вопросом, является ли проблема сжатием gzip. - person Sean Bright   schedule 03.04.2018--compressed
с curl, и это сработает. - person hanshenrik   schedule 04.04.2018