У меня есть этот скрипт, где я получаю ссылки на изображения с определенных сайтов, поэтому я создал функцию, в которой передаю ссылку на изображение и исходное имя веб-сайта, которое будет использоваться для размещения изображения в соответствующих каталогах.Сохранить изображения с помощью CURL, иногда он сохраняет пустые изображения
Однако иногда эта функция не будет работать должным образом, в случайном порядке она сохранит изображение, однако изображение в основном пустое, поэтому оно просто сохранит пустой файл с исходным именем файла из $ img_link, но не сможет показать фактическое образ.
В этом случае, если это произойдет, я попытался вернуть мне путь по умолчанию. Но он не может этого сделать и возвращает пустое изображение, как описано выше.
function saveIMG($img_link, $source){
$name = basename($img_link); // gets basename of the file image.jpg
$name = date("Y-m-d_H_i_s_") . mt_rand(1,999) . "_" .$name;
if (!empty($img_link)){
$ch = curl_init($img_link);
$fp = fopen("images/$source/$name", 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
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');
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
curl_close($ch);
fclose($fp);
$name ="images/$source/$name";
return $name;
}
else {
$name = "images/news_default.jpg";
return $name;
}
}
У вас есть идея, как сделать случай, когда он не может получить изображение?
Благодаря
Это хорошо, но я бы положил 'fopen()' * после того, как * '$ result' будет собран, чтобы вы могли проверить результат и посмотреть, действительно ли это, даже до того, как вы начнете открывать файл для записи , – ghoti
Хорошая точка. Я отредактировал ответ, чтобы отразить ваш комментарий. – Andrew
@ Андрей, я ранее использовал file_get_content, но я думаю, что использование cURL показало лучшие результаты. В любом случае я изменил свою функцию, используя ваш совет, и пока он отлично работает. Спасибо человеку :) –