从另一台服务器获取图像

时间:2012-01-27 23:53:22

标签: php html image curl

比如说,对于这个例子,这是一个图像:http://www.basitansari.com/wp-content/uploads/logoaba.png,它托管在网站A上。

我将此图片称为带有<img>标记的网站B.如果站点A的所有者删除了此图像,那么我怎么知道使用PHP删除了图像?如果网站A的所有者删除了图片,那么我想要显示notfound.jpg图片。我应该为此目的使用cURL吗?

4 个答案:

答案 0 :(得分:2)

检查图像服务器端肯定是可能的,但它可能不是最好的解决方案。这样做意味着所有有效图像将被加载两次(一次是服务器端,一次是客户端)。更好的方法可能是使用JavaScript来处理损坏的图像。以下代码仅在加载图像时发生错误时将采取措施,并将其替换为您指定的图像:

<script type="text/javascript">
function brokenImage( obj ) {
    obj.onerror = '';
    obj.src = 'path/to/notfound.jpg';
    return true;
}
</script>
<img onerror="brokenImage(this);" src="broken.jpg" alt="" />

答案 1 :(得分:1)

if (!$fp = fopen('http://www.basitansari.com/wp-content/uploads/logoaba.png', 'r')) {
  // The image cannot be retrieved, handle it here.
} else {
  fclose($fp);
}

这是最快捷的方式,因为它只是检查图像是否可以成功检索,它不会下载整个文件。

答案 2 :(得分:0)

您应该使用HEAD方法调用该URL并检查状态代码404(未找到)或200(确定)

答案 3 :(得分:0)

您可以直接致电:使用fopen检查图像源是否存在,如果不是,则显示notfound.jpg。 @用于抑制警告

<img src="<?php if (@fopen("http://www.basitansari.com/wp-content/uploads/logoaba.png", "r")) {echo 'http://www.basitansari.com/wp-content/uploads/logoaba.png';} else{echo 'notfound.jpg';}?>" />