PHP 递归遍历目录并生成文件列表及下载链接
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 '指定的路径不是一个目录.';
}
代码功能:
- 递归遍历目录: 使用
listFilesRecursively()函数,递归遍历指定目录,并获取所有文件和子目录信息。 - 生成文件列表: 对于每个文件,生成一个包含文件名和下载链接的 HTML 列表项。
- 生成子目录列表: 对于每个子目录,生成一个包含子目录名称的 HTML 列表项,并递归调用
listFilesRecursively()函数继续遍历子目录。 - 下载链接: 每个文件链接指向
download.php页面,并将文件名作为参数传递,以便在download.php页面中下载文件。
使用说明:
- 将代码保存为 PHP 文件 (例如
list_files.php)。 - 将
$mainDirectory变量的值替换为要列出和下载文件的主目录的实际路径。 - 在浏览器中访问
list_files.php文件,即可查看目录下的文件列表和下载链接。
注意:
- 确保
download.php文件已存在,并可以处理文件下载请求。 - 确保
uploads目录存在,且您具有读取该目录的权限。 - 为了安全起见,您应该对用户上传的文件进行安全检查,以防止恶意代码被上传。
原文地址: https://www.cveoy.top/t/topic/wW6 著作权归作者所有。请勿转载和采集!