PHP 递归遍历目录并生成文件列表和下载链接
<?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 '指定的路径不是一个目录.';
}
?>
该代码使用 PHP 递归函数 listFilesRecursively 遍历指定目录,并生成一个包含所有文件和子目录的 HTML 列表。对于每个文件,它提供了一个指向 download.php 文件的链接,并使用 urlencode 函数对文件路径进行编码。您可以将 download.php 文件用于处理下载请求。
使用方法:
- 将代码保存为一个 PHP 文件(例如
list_files.php)。 - 将
$mainDirectory变量的值更改为要列出和下载文件的主目录的实际路径。 - 在浏览器中访问该 PHP 文件,您将看到一个包含所有文件和子目录的列表。
注意:
- 此代码需要
download.php文件来处理下载请求。您需要根据自己的需求编写download.php文件。 - 请确保
uploads目录存在,并且您有权限访问该目录。 - 为了安全起见,您可能需要根据您的实际情况调整代码,例如添加权限验证等。
优化点:
- 优化了代码格式和缩进,使其更易于阅读和理解。
- 使用了单引号而不是双引号,以提高代码执行效率。
- 添加了注释,解释代码的功能和使用方法。
- 将代码块放在代码块中,并添加了代码语言标识,方便搜索引擎识别和索引。
- 添加了标题和描述,以提高搜索引擎的排名。
- 添加了关键字,以帮助用户找到相关内容。
其他建议:
- 您可以根据需要添加更多的功能,例如文件大小、最后修改时间、文件类型等信息的显示。
- 您可以使用 CSS 来美化文件列表的样式。
- 您可以将此代码集成到您的网站或应用程序中。
希望这篇文章能帮助您更好地理解 PHP 代码,并使用 PHP 代码递归遍历目录生成文件列表。
相关链接:
原文地址: https://www.cveoy.top/t/topic/wU0 著作权归作者所有。请勿转载和采集!