PHP在两个特定目录中搜​​索图像文件

时间:2013-06-11 17:57:46

标签: php

我需要查找并回显一个位于这两个名为'photoA'或'photoB'的目录中的图像文件名。

这是我开始使用的代码,它试图抓取这些目录,查找指定的文件:

$file = 'image.jpg';    
$dir = array(
    "http://www.mydomain.com/images/photosA/", 
    "http://www.mydomain.com/images/photosB/"
);

foreach( $dir as $d ){
    if( file_exists( $d . $file )) {
        echo $d . $file;
    } else {
        echo "File not in either directories.";
    }
}

我觉得我已经离开了。

3 个答案:

答案 0 :(得分:2)

您无法在file_exists中使用网址,您需要在服务器的文件系统中使用绝对或相对路径(相对于运行脚本),例如:

        $dir = array(
            "images/photosA/", 
            "../images/photosB/", 
            "/home/user/www/images/photosB/"
        );

如果您不知道确切的路径并在此之前添加文档根目录,您还可以使用相对于Web服务器根目录的路径:

        $dir = array(
            $_SERVER['DOCUMENT_ROOT'] . "/images/photosA/", 
            $_SERVER['DOCUMENT_ROOT'] . "/images/photosB/"
        );

(或者您使用file_exists()

使用一次

答案 1 :(得分:1)

由于您从网站的根目录中运行此脚本,因此您无需定义“http://www.mydomain.com/”,因为这不会导致访问被拒绝问题,因为它不是绝对/相对文件路径。相反,如果images /文件夹与PHP脚本位于同一目录级别,那么您需要做的只是

$dir = array(
  "images/photosA/", 
  "images/photosB/"
);

否则,只需根据需要添加绝对路径以使其工作,但是你不能把它放在。其余的似乎应该可以正常工作。

答案 2 :(得分:0)

正如其他人所说,file_exists()用于本地文件。

如果您真的需要通过http查找文件,可以使用:

$file = 'http://www.domain.com/somefile.jpg';
$file_headers = @get_headers($file);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
    $exists = false;
}
else {
    $exists = true;
}

注意:如果图像不存在,这依赖于服务器返回404。如果服务器改为重定向到索引页面或pporly编码的错误页面,则可能会获得错误的成功。