【问题标题】:Get list of all image files in a directory获取目录中所有图像文件的列表
【发布时间】:2012-03-06 15:30:14
【问题描述】:

我正在尝试生成一些 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/";

【问题讨论】:

  • glob 的输出取决于输入,因此在您的情况下,它将以 $directory 定义的方式输出路径,而路径又取决于 SITE_ROOT_PATH。

标签: php file directory


【解决方案1】:

这看起来像是 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

【讨论】:

    【解决方案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).'" />';
    ...
    

    【讨论】:

      【解决方案3】:

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

      根据您所概述的具体情况以及您问题中给出的确切数据,以下方法可能有效:

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

      【讨论】:

        猜你喜欢
        • 2010-12-01
        • 2010-11-30
        • 2012-08-14
        • 2011-04-26
        • 1970-01-01
        • 2011-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多