PHP, tp5, 使用递归遍历获取文件夹下面所有文件

文件保存在数据库中长这样:  

 

输入是一个元素为目录名的数组

 

具体代码如下: 

<?php

// 递归获取文件夹下面所有的文件, 不包括文件夹, 存入 objects 列表中
protected function traversal_folder($dirs, $objects=[])
{
    $userId = $this->getUserId();
    foreach ($dirs as $key => $value) {
        $suffix = pathinfo($value, PATHINFO_EXTENSION);
        // 根据是否有后缀判断是文件还是文件夹
        if ($suffix == '') {
            // 如果是文件夹则获取该文件夹下所有文件, 包括文件夹
            $result = Db::name('asset')
                ->where('user_id', $userId)
                ->where('file_path', $value) 
                ->select();

            // 将获取到的文件列表重新拼接成带路径的文件名并存入文件数组中
            $files = [];
            foreach ($result as $k => $file) {
                $files[] = $file['file_path'] . '/' . $file['filename'];
            }
            
            // 文件夹传入递归函数继续获取文件
            $objects = $this->traversal_folder($files);
        } else {
            // 将文件名添加到oss待删除列表中
            $objects[] = $value;
        }
    }
    return $objects;
}

 

 看到这里, 有疑问请指出!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章