2

我需要查找并回显位于这两个名为“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.";
    }
}

我觉得我已经走了。

4

3 回答 3

2

您不能在 中使用 url 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()

于 2013-06-11T18:03:23.133 回答
1

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

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

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

于 2013-06-11T18:03:05.670 回答
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 编码的错误页面,您可能会得到错误的成功。

于 2013-06-11T18:07:19.127 回答