获取目录中所有图像文件的列表

时间:2012-03-06 15:30:14

标签: php file directory

我正在尝试生成一些HTML代码,以便为幻灯片放映列出一些图像。

我得出了以下想法:

function galGetTopPhotos()
{
    //path to directory to scan
    $directory = SITE_ROOT_PATH."/gallery/best/";

    //get all files
    $images = glob($directory . "*.*");

    //print each file name
    $ret = "";
    $ret .= '<div id="myslides">';        

    foreach($images as $image)
    {
        $ret .= '<img src="'.$image.'" />';
    }

    $ret .= '</div>';

    return $ret;
}

问题是它只在我使用$directory的根路径时才有效...如果我使用URL它将无效。它会导致图像无法加载。以下是此代码生成的内容:

<div id="myslides">
<img src="D:/xampp/htdocs/mrasti/gallery/best/1.jpg" />
<img src="D:/xampp/htdocs/mrasti/gallery/best/10.jpg" />
</div>

所以问题是,如何获取文件列表以便以http://127.0.0.1/....格式生成img源?

我的意思是,如果我使用这样的代码,它就不会返回任何文件!

$directory ="http://127.0.0.1/mrasti/gallery/best/";

3 个答案:

答案 0 :(得分:4)

这看起来像PHP函数basename的工作。这将获取文件路径并仅返回路径的最后一个元素 - 在本例中是jpeg图像的实际名称。

您可以修改代码,使其看起来像这样:

$urlPath = "http://127.0.0.1/mrasti/gallery/best/";

...
...

foreach($images as $image)
{
    $relative_path = $urlPath.basename($image);
    $ret .= '<img src="'.$relative_path.'" />';
}

上面采用路径并将文件名“example.jpg”附加到您的图像目录url

答案 1 :(得分:2)

glob仅适用于本地文件,不适用于远程文件。看看这里:

http://php.net/manual/en/function.glob.php

对于远程文件,请查看此处:

http://www.php.net/manual/en/features.remote-files.php

但我不认为你需要远程文件。您似乎想要浏览本地目录并显示此图像。

尝试这样的事情

...
$ret .= '<img src="http://127.0.0.1/my/path/'.basename($image).'" />';
...

答案 2 :(得分:1)

您需要具备将磁盘上的文件路径转换为正确URI的功能,以便您的浏览器能够理解它。

在您概述的具体案例中,以及您问题中给出的确切数据,以下内容可能有效:

foreach($images as $image)
{
    $src = '/mrasti/gallery/best/'.substr($image, strlen($directory));
    $ret .= '<img src="'.$src.'" />';
}