【问题标题】:Listing out files in PHP (ONLY the files) as links from all subdirectories of a directory在 PHP 中列出文件(仅文件)作为来自目录所有子目录的链接
【发布时间】:2016-04-07 13:48:23
【问题描述】:

我有一个托管多个文件的 ftp 站点。由于我们使用的下载软件的限制,每个文件都在主目录(上传)中自己的文件夹中(每个文件必须有一个唯一的文件路径,文件名必须是 modpack.zip(不能是此名称的任何变体,必须具有该确切名称,因此每个版本都在其自己的子文件夹中)

我需要找到一种方法来列出表中主上传文件夹的所有子目录中的所有文件,并列出每个文件的大小。每个文件都必须有一个链接,并且不需要列出文件夹。

到目前为止,我的起点是:

<div id="list"><table>
<tr><td align="center">Modpack List</td></tr>
<?php

$dir_open = opendir('uploads/');

while(false !== ($filename = readdir($dir_open))){
    $bytes = filesize($_SERVER['DOCUMENT_ROOT']."/uploads/".$filename."");
    if($filename != "." && $filename != ".."){
        echo '<tr><td><a href="/uploads/'.$filename.'">'.$filename.'</a> - '.bytesToSize($bytes).'</td></tr>';
    }
}

closedir($dir_open);

?>
</table>
</div>

我尝试过使用 readdir() 和 scandir(),但两者都列出了我不想要的文件和子文件夹,并且当前设置仅列出了 /uploads 下的所有文件和文件夹,并且不会列出子文件夹下的任何文件,除非我单击该文件夹,这会将我带到该文件夹​​的 FTP 页面。

我已经尝试了几个在此处以及其他站点上看到的已发布解决方案,但没有一个能满足我的需要,而且我不知道如何使它将文件夹作为链接省略,只列出文件。

【问题讨论】:

标签: php


【解决方案1】:

尝试使用 glob():

<?php
    foreach(glob('path-to/UPLOAD_FOLDER/*') as $subDirectory) {         
        foreach(glob($subDirectory'./*') as $file) {

            // do what you want with file here... example:
            $file_list .= $file.'<br>';                             
        }                               
    }
    echo $file_list;
?>  

【讨论】:

  • 这仅列出每个子目录下的文件。感谢您的帮助!
  • 欢迎您...我喜欢 glob() 函数...我使用上面的代码在我的图片库中列出图片
猜你喜欢
  • 2016-01-16
  • 2012-11-14
  • 2012-09-02
  • 2014-03-12
  • 2011-03-01
  • 1970-01-01
  • 2010-09-11
相关资源
最近更新 更多