function listFilesRecursively($directory) {
    if (is_dir($directory)) {
        if ($dh = opendir($directory)) {
            echo '<ul>';

            while (($entry = readdir($dh)) !== false) {
                $entryPath = $directory . '/' . $entry;

                if ($entry != '.' && $entry != '..') {
                    if (is_file($entryPath)) {
                        echo '<li>';
                        echo '<a href='download.php?file=' . urlencode($entryPath) . ''>$entry (下载)</a>';
                        echo '</li>';
                    } elseif (is_dir($entryPath)) {
                        echo '<li>$entry (子目录)</li>';
                        listFilesRecursively($entryPath); // 递归遍历子目录
                    }
                }
            }

            echo '</ul>';
            closedir($dh);
        }
    }
}

$mainDirectory = 'uploads/'; // 请将此路径替换为您要列出和下载文件的主目录的实际路径

if (is_dir($mainDirectory)) {
    echo '<h2>文件列表:</h2>';
    listFilesRecursively($mainDirectory);
} else {
    echo '指定的路径不是一个目录.';
}

代码功能:

  1. 递归遍历目录: 使用 listFilesRecursively() 函数,递归遍历指定目录,并获取所有文件和子目录信息。
  2. 生成文件列表: 对于每个文件,生成一个包含文件名和下载链接的 HTML 列表项。
  3. 生成子目录列表: 对于每个子目录,生成一个包含子目录名称的 HTML 列表项,并递归调用 listFilesRecursively() 函数继续遍历子目录。
  4. 下载链接: 每个文件链接指向 download.php 页面,并将文件名作为参数传递,以便在 download.php 页面中下载文件。

使用说明:

  1. 将代码保存为 PHP 文件 (例如 list_files.php)。
  2. 将 $mainDirectory 变量的值替换为要列出和下载文件的主目录的实际路径。
  3. 在浏览器中访问 list_files.php 文件,即可查看目录下的文件列表和下载链接。

注意:

  • 确保 download.php 文件已存在,并可以处理文件下载请求。
  • 确保 uploads 目录存在,且您具有读取该目录的权限。
  • 为了安全起见,您应该对用户上传的文件进行安全检查,以防止恶意代码被上传。
PHP 递归遍历目录并生成文件列表及下载链接

原文地址: https://www.cveoy.top/t/topic/wW6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录