联系官方销售客服
1835022288
028-61286886
不解压缩的情况下获取zip压缩包目录并生成前端树
代码是在前端页面的,结合https://www.xunruicms.com/wenda/62039.html
使用
<?php $url = dr_get_file($down); $parts = parse_url($url); $path = $parts['path']; $zipName='/www/wwwroot/tmp/'. $path; $zip = new ZipArchive(); $zip->open($zipName); $tree = array(); for ($i = 0; $i < $zip->numFiles; $i++) { $filename = $zip->getNameIndex($i); $path = explode('/', $filename); $node = &$tree; foreach ($path as $dir) { if (!isset($node[$dir])) { $node[$dir] = array(); } $node = &$node[$dir]; } } function treeToHtml($tree) { $html = '<ul>'; foreach ($tree as $name => $subtree) { if (!empty($name)) { $html .= '<li>'; $html .= $name; if (!empty($subtree)) { $html .= treeToHtml($subtree); } $html .= '</li>'; } else { $html .= treeToHtml($subtree); } } $html .= '</ul>'; return $html; } $html = treeToHtml($tree); echo $html; $zip->close(); ?>
配合jstree.js 使用 给各种文件图标
缺点1:写在html中的php,不是写成函数什么的
缺点2:缓存时单纯的文件缓存,当页面大量的情况下,容易造成性能瓶颈及磁盘占用,使用内存缓存 为优缺点3:缓存是访问当前页面,然后php进行一个if判断缓存是否存在,不存在才进行一个创建,这样并不是太友好,当页面被采集等问题频繁访问可能导致服务器卡死,需要改进为 上传文件 时进行缓存
代码可以直接拿走复制黏贴直接使用,需要注意的点,
文件路径缓存路径
解决问题1:文件夹优先显示 文件后显示排序,而不是默认首字母
解决问题2:获取zip目录时 当文件夹是中文, centos7 默认中文乱码的问题