我只有一小段代码,可用来扫描服务器上某个目录中的所有文件和文件夹。但是有一个陷阱...它只能扫描指定的文件夹,而不能扫描子目录。假设share/
是此扫描的根目录,如果像share/folder/file.png
这样的子目录中没有文件,则不会列出这些文件,我的项目的全部目的是创建HTML文件资源管理器。
这是我用来从服务器接收文件列表,以便稍后使用JavaScript在浏览器中显示的代码:
<?php
$listFiles = array();
if ($handle = opendir('./share')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
$listFiles[] = $entry;
}
}
closedir($handle);
}
$FS_files = json_encode($listFiles);
?>
然后我将它“推”到我的实际JavaScript代码中,就像这样:
let FS_files = <?php echo $FS_files ?>
我上面的代码基本上从扫描的目录生成一个文件名数组。我想知道的是如何获取该目录中的文件的 整个 JSON树,以及其中的所有文件夹,或者可能更改我的代码以使其工作? / p>
答案 0 :(得分:2)
<?php
function scanFolder($dir) {
$result = array();
$cdir = scandir($dir);
foreach ($cdir as $key => $value) {
if (!in_array($value,array(".",".."))) {
if (is_dir($dir . DIRECTORY_SEPARATOR . $value)) {
$result[$value] = scanFolder($dir . DIRECTORY_SEPARATOR . $value);
} else {
$result[] = $value;
}
}
}
return $result;
}
$FS_files = json_encode(scanFolder("./share"));
?>
该功能扫描文件夹并使用 is_dir 检查每个条目。如果为真,则使用相同功能扫描该文件夹。