检测是否有 API url returns 图像
Detect if API url returns image or not
我有 API $url
应该 return 图像,具体取决于请求。
它要么 return 是一个图像,要么它什么都没有 return 然后我得到错误 Failed to load resource: server responded with a statuf of 404
.
为了让您想象我做了什么,我正在发送一个带有图书 ISBN 编号的请求,然后 API 检查数据库中是否有 ISBN 的图书封面,如果有,我会收到图书封面图片 returned,但如果没有,我想改用本地图书图标图片。
我试过这样做
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()
没有 return 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'/>";
您应该直接在 html
中处理
HTML if image is not found
否则你仍然可以检查 url 是否存在 curl 或 file_get_contents 但这会更慢
我有 API $url
应该 return 图像,具体取决于请求。
它要么 return 是一个图像,要么它什么都没有 return 然后我得到错误 Failed to load resource: server responded with a statuf of 404
.
为了让您想象我做了什么,我正在发送一个带有图书 ISBN 编号的请求,然后 API 检查数据库中是否有 ISBN 的图书封面,如果有,我会收到图书封面图片 returned,但如果没有,我想改用本地图书图标图片。
我试过这样做
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()
没有 return 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'/>";
您应该直接在 html
中处理HTML if image is not found
否则你仍然可以检查 url 是否存在 curl 或 file_get_contents 但这会更慢