PHP读取(windows)文件夹并生成树状目录

环境,windows10,xampp(php7),codeigniter4,zui.sexy

直接读取文件夹并生成树状目录方案

得益于php7对GBK中文目录的支持,codeigniter的File Helper,zui.sexy的树状目录,干这件事情只需要一个函数,就能得到全部目录(包含子目录)的Array:

directory_map()

前端用框架zui.sexy的方案;

直接读取文件夹、生成树状目录方案、带文件夹选择、文件下载

下方做的是有多个项目的文件夹,及查看每个项目的文件夹里面有什么文件夹、文件。

data
--20171015\
---- a.txt
---- b.txt
---- c.txt
--20171016\
---- a.txt
---- b.txt
---- c.txt
--20171017\
---- a.txt
---- b.txt
---- c.txt
--20171018\
---- a.txt
---- b.txt
---- c.txt

Controller中:

    public function project($project){
        $this->data["left_data"] = $this->get_all_projects();
        $this->data["url_floder"] = urldecode($project);
        $this->data["right_data"] = directory_map('data/' . urldecode($project));

        return view('welcome_message',$this->data);
    }

然后在view中作了判断,是否显示具体文件夹:

if(!is_array($right_data)){
    echo $right_data;
}else{
    $url_project = urldecode('http://127.0.0.1/data/' . $url_floder . '/');
    echo array2ul($url_project,$right_data);
}

调用了这个自定义函数:


function array2ul($path,$array,$ul_first_times=0,$ul_get_color=0) {

    if ($ul_first_times == 0){
        $out = '<ul class="tree tree-lines tree-folders" data-ride="tree" data-animate="true">';
    }else{
        $out = '<ul>';
    }

    foreach($array as $key => $elem){
        if(!is_array($elem)){
            $download_url = $path . $elem;
            $out .= '<li><a target="_blank" href="' . $download_url . '">' . $elem . '</a></li>';
        }else{
            $ul_first_times += 1;

            $ul_get_color = count(explode('\\', $path));

            $out .= '<li><a title="Level ' . $ul_get_color . ' Title"  href="#">' . $key . '</a>' . array2ul($path . $key,$elem,$ul_first_times,$ul_get_color) . "</li>";

            $file_path = './data/' . $key . 'readme.txt';

            if ($ul_get_color == 1 && is_file($file_path)){
                $out .= '<p>Thing!</p>';
            }else{
                $out .= $path . $key . 'readme.txt';
            };

        }
    }

    $out .= '</ul>';

    return $out; 
}

文章信息:
写作日期:2017年10月18日
写作地点:广东·江门
写作背景:想做类似于teambition的本地系统,但基于文件系统;后来放弃了,因为不方便做更新提醒及筛选。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容