检测API网址是否返回图片

时间:2018-03-18 00:12:24

标签: php image warnings file-type

我有API $url,它应根据请求返回图片。 它要么返回图像,要么不返回任何内容,然后我收到错误Failed to load resource: server responded with a statuf of 404

就这样你可以想象我做了什么,如果它有数据库中ISBN的书籍封面,我发送一个带有书籍ISBN号和API检查的请求,如果有的话,我会把书封面作为图片返回,但是如果没有,我想改用我当地的图书图标图片。

我试过这样的事情

list($width, $height) = getimagesize($url);
echo "Width: ".$width."<br/>";
echo "Height: ".$height."<br/>";

if($width==1 && $height==1){
   echo "<img src='../images/book_cover.png' alt='' class='cover'/>";
}else{
   echo "<img src=$url alt='' class='cover'/>";
}

但是由于getimagesize()没有返回FALSE,我收到了php警告消息。

然后我尝试使用

if(!exif_imagetype($url)){
   echo "<img src='../images/book_cover.png' alt='' class='cover'/>";
}else{
   echo "<img src=$url alt='' class='cover'/>";
}

这有效,但我收到警告failed to open stream: HTTP request failed

任何想法会起到什么作用并使其全部合法?

编辑:

echo "<img src=$url onerror=\"this.onerror=null;this.src='../images/book_cover.png';\" alt='' class='cover'/>";

1 个答案:

答案 0 :(得分:0)

你应该直接在你的html中处理它

HTML if image is not found

否则你仍然可以检查url是否存在curl或file_get_contents,但这会更慢