Скачайте изображение по определенному URL и верните ошибку, если изображение не существует PHP - PullRequest
1 голос
/ 31 мая 2019

Я пытаюсь загрузить изображение, если оно существует по URL-адресу и, если оно не существует, оно должно вернуть ошибку.

Пока я пробовал это

$ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    $fp = fopen('images/'.$isbn.'.jpg', 'wb');
	curl_setopt($ch, CURLOPT_FILE, $fp);
    // don't download content
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    if(curl_exec($ch)!==FALSE){
        return 1;
    }
    else{
        return 0;
    }

Теперь он возвращает 0, когда изображение не существует, но поврежденный файл изображения все еще создается.

Теперь я не совсем уверен, еслия должен getimagesize проверить, существует ли изображение, а затем вызвать мою функцию curl.

if(@getimagesize($remoteImageURL)){
    //image exists!
}

Также обратите внимание, что мой скрипт будет выполняться на 14 миллионах записей, поэтому оптимизация имеет решающее значение.

This URL returns an image

https://pictures.abebooks.com/isbn/9780007428540-uk.jpg

This URL returns an xml error

https://pictures.abebooks.com/isbn/9781781108765-uk.jpg

РЕДАКТИРОВАТЬ 1:

$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	$content  = curl_exec($ch);
	$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
	curl_close($ch);
	if($contentType=='image/jpeg'){
		//download image
	}else{
		//return error;
	}

Является ли приведенный выше код правильным подходом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...