javascript - PHP - 创建指定文件夹的目录列表
问题描述
我有一小段代码用于扫描服务器上的某个目录以查找其中的所有文件和文件夹。但是有一个问题......它只能扫描指定的文件夹,而不能扫描子目录。假设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 文件树以及其中的所有文件夹,或者可能更改我的代码使其以这种方式工作?
解决方案
<?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检查每个条目。如果为真,则使用相同的功能扫描此文件夹。
推荐阅读
- phpspec - 如何在 PHP Spec 测试方法中快速编写调试输出
- angular - 如何在 RxJS 中调用回调函数的 switchMap 中取消订阅?
- xaml - 滚动视图渲染器上的 ObjectDisposedException
- amazon-web-services - 自定义属性未传递到由 AWS Cognito 创建的 ID_TOKEN
- excel - 使用排序功能时 Excel 中的运行时错误 438
- reactjs - 将谷歌地图组件与反应 HOC 集成?
- nhibernate - 当我在 Query 上调用 Update 方法时,为什么 NHibernate 会创建一个临时表?
- python - 云选择器中的 PySpark 异常
- c# - 有没有一种简单的方法可以在不使用循环的情况下创建相同对象的列表?
- resolvejs - 大型数据集的性能问题