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 = '
    '; }else{ $out = '
      '; } foreach($array as $key => $elem){ if(!is_array($elem)){ $download_url = $path . $elem; $out .= '
    • ' . $elem . '
    • '; }else{ $ul_first_times += 1; $ul_get_color = count(explode('\\', $path)); $out .= '
    • ' . $key . '' . array2ul($path . $key,$elem,$ul_first_times,$ul_get_color) . "
    • "; $file_path = './data/' . $key . 'readme.txt'; if ($ul_get_color == 1 && is_file($file_path)){ $out .= '

      Thing!

      '; }else{ $out .= $path . $key . 'readme.txt'; }; } } $out .= '
    '; return $out; }

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

你可能感兴趣的:(PHP读取(windows)文件夹并生成树状目录)