0

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

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

$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

有什么办法吗?

谢谢

4

6 回答 6

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

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

于 2013-08-05T07:15:16.527 回答
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 ";
}
于 2013-08-05T07:18:04.187 回答
1

最快和有效的解决方案损坏或找不到图像链接
我建议你不要使用 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;
    }
}

注意: 此当前代码可帮助您识别损坏或未找到的 url 图像这不会帮助您识别图像类型或标题

于 2017-01-23T17:47:50.973 回答
0

使用fopen函数

if (@fopen($resultUF['destination'], "r")) {
    echo "File Exist";
} else {
    echo "File Not exist";
}
于 2013-08-05T07:22:49.297 回答
0

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

于 2013-08-05T07:13:53.620 回答
0

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

 if (file_get_contents($url) === false) {
       //image not foud
   }
于 2013-08-05T07:17:08.380 回答