如何使用URL检查服务器上是否存在Image

时间:2013-08-05 07:11:38

标签: php

我正在尝试检查服务器上是否存在图像文件。我正在使用其他服务器获取图像路径。

请查看我尝试过的以下代码,

$urlCheck = getimagesize($resultUF['destination']);

if (!is_array($urlCheck)) {
  $resultUF['destination'] = NULL;
}

但是,它显示在警告

之下
Warning: getimagesize(http://www.example.com/example.jpg) [function.getimagesize]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in

有没有办法这样做?

由于

6 个答案:

答案 0 :(得分:3)

$url = 'http://www.example.com/example.jpg)';
print_r(get_headers($url));

它会给出一个数组。现在您可以检查响应以查看图像是否存在

答案 1 :(得分:1)

您需要检查文件是否在服务器上定期存在。您应该使用:

is_file。例如

$ URL = “http://www.example.com/example.jpg”;

if(is_file($url))
{
echo "file exists on server";
}
else
{
echo "file not exists on server ";
}

答案 2 :(得分:0)

问题是图片可能不存在,或者您没有直接权限来访问图片,否则您必须指向无效的位置到图片。

答案 3 :(得分:0)

您可以使用file_get_contents。这将导致php在返回false的同时发出警告。您可能需要处理此类警告显示以确保用户界面不会与其混淆。

 if (file_get_contents($url) === false) {
       //image not foud
   }

答案 4 :(得分:0)

使用fopen功能

if (@fopen($resultUF['destination'], "r")) {
    echo "File Exist";
} else {
    echo "File Not exist";
}

答案 5 :(得分:0)

最快&有效破解或未找到图像链接的解决方案
我建议你不要使用getimagesize(),因为它将首先下载图像然后它会检查图像大小+如果这不会成像然后它会抛出异常所以使用下面的代码

if(checkRemoteFile($imgurl))
{
//found url, its mean
echo "this is image";
}

function checkRemoteFile($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    // 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 true;
    }
    else
    {
        return false;
    }
}

注意: 此当前代码可帮助您识别损坏或未找到的网址图像,这无法帮助您识别图像类型或标题