Я пытаюсь загрузить удаленное изображение с помощью Curl, он загружает файл, однако, когда я пытаюсь открыть изображение на моем Mac — я получаю сообщение «Не удалось открыть».
Я вижу имя файла & Расширение не повреждено, однако, каким-то образом оно не сохранено должным образом, так как размер файла составляет 177 байт, но я ожидаю, что размер файла будет около 3 КБ.
Кто-нибудь может подсказать, почему это так? Удаленный сайт мешает мне как-то загрузить файл? Я пробовал этот же код с некоторыми другими изображениями на других сайтах, и он отлично работает ??
$url = 'http://www.fifaindex.com/static/FIFA16/images/crest/256/light/21.png';
$saveto = '21.png';
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$raw = curl_exec($ch);
curl_close ($ch);
if(file_exists($saveto)){
unlink($saveto);
}
$fp = fopen($saveto,'x');
fwrite($fp, $raw);
fclose($fp);
Веб-сайт, с которого вы пытаетесь получить изображение, возможно, добавил некоторые ограничения, так что если изображение вызывается извне, домен не будет обслуживаться.
Чтобы обойти это, вы можете указать реферера в опциях CURL, указав в нем URL сайта, с которого вы хотите получить изображение.
В твоем случае
curl_setopt($ch, CURLOPT_REFERER, "http://www.fifaindex.com");
Я попробовал это сам на моем локальном сервере, и это сработало.
Других решений пока нет …