当前位置: 首页 > 网站建设 > Zdir 实用的目录列表程序

Zdir 实用的目录列表程序

发布于:2018-6-20 最后更新:2020-4-12 网站建设 167条评论 133,947 views
本站提供Linux服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme

最新版v1.31已更新,请前往Github下载:https://github.com/helloxz/zdir/releases

原打算自建一个前端库,网上找了一大圈目录列表程序,发现都不符合自己的胃口,于是自己动手,最后Zdir 诞生了。Zdir是一款使用PHP开发的目录列表程序,无需数据库,安装简单,使用方便。

主要功能

  • 目录浏览
  • MarkDown文件预览
  • CSS/JavaScript一键复制
  • 查看文件HASH
  • 图片预览
  • 文件索引
  • 文件搜索(依赖于文件索引)
  • 文件管理(上传/下载/删除等)
  • 二维码支持
  • 视频播放/音乐播放
  • 文本查看
  • Office在线预览

功能详细说明(不完全)

MarkDown文件预览

如果是MarkDown文件(.md)后面会出现一个小眼睛按钮,点击此按钮可直接预览。

如果文件是以readme.md命名,会出现“使用说明”按钮,点击也可以预览,如下截图。

链接复制

复制按钮会根据文件类型判断,最后返回不同的复制结果,在用于搭建前端库的时候非常有帮助,比如:

<!--如果复制的是.js文件,返回结果为-->
<script src = 'https://libs.xiaoz.top/jquery/2.0.3/jquery-2.0.3.js'></script>
<!--如果复制的是.css文件,返回结果为-->
<link rel='stylesheet' href='https://libs.xiaoz.top/layer/skin/layer.css'>
<!--如果是图片等文件-->
<img src = 'https://libs.xiaoz.top/material/loading/loading0.gif' />

其它文件返回文件URL地址。

查看文件hash

点文件后面的“叹号”按钮,可以计算文件md5和sha1值,验证文件hash值,可避免运营商劫持等风险。

图片预览

鼠标移动到图片文件会显示图片预览,如下截图。

文件索引

如果文件太多,查找不太方便,Zdir暂时未实现文件搜索功能,不过通过“文件索引”功能加上“Ctrl + F”,找文件也是分分钟的事情。

“文件索引”缓存时间为24小时,如果希望立即清除缓存请访问cache.php?del=cache

以上仅列举出了部分功能,大家可自行下载安装体验。

使用方法

  • 下载源码放到站点根目录
  • config.simple.php修改为config.php
  • config.php设置站点信息/密码等信息

相关推荐

总结

从使用过的目录列表程序来看,h5ai 功能很强大,但是配置略微繁琐,代码有混淆,不适合二次修改。

PHP Directory Lister简洁适用,但是从墙外加载资源,不利于新手,另外Zdri的部分开发思路也借鉴了PHP Directory Lister

Zdir虽功能简单,但却适用,猛戳下面的链接下载。


发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注


已有167条评论


  1. 大佬,后台新建文件夹,创建不了,提示:Folder 专用 created,文件名:No data available in table,这个是直接在放在空间里使用的,不是写入mysql安装的,怎么会创建文件夹呢?

  2. 文件索引
    index.php??c=cache
    index.php?c=cache&del=cache清除当前缓存并重新生成索引
    都是显示HTTP ERROR 500。
    目录权限是777。

      1. 他的界面就是去掉了导航栏底色,还有导航栏和路径等字号变大了,左上角logo和主体列出的文件名和对应的操作图标色彩变成一致。博主也可以这样照着改,换个颜色就好了,他是天蓝,你用深蓝藏青色。希望看到更好的界面。

    1. 1、如果域名无法被公网访问,将无法生成索引。您可以在hosts文件中添加您的域名指向127.0.0.1
      2、视频加载失败检查下IIS的MIME类型设置

  3. 关于列表显示乱码提示文件不存在问题,在zdir.class.php文件第428行windows转码处将gb2312改为utf-8就完美显示,乱码运行系统是chrome 81.0.4044.122版本,如果有相同乱码遭遇的可以采用此方法解决,没有测试过其他平台是否正常,目前仅在chrome和Safari以及QQ游览器出现乱码行为并采取此方法修复。

    1. 还有一个问题是同样乱码行为出现在admin.php界面请问相关代码在哪修改,此乱码导致无法后台修改文件名字,无法上传中文名称文件,以及创建中文名称文件夹

      1. widows平台,zdir版本1.3-20200405,在自带后台admin.php进行中文文件上传和中文文件夹创建以及修改名称,均出现乱码,或者空白,使用英文则正常,请问怎么解决,谢谢

  4. 大佬。我在config.php修改密码成”password” => “123456”但是,我输入帐号admin 密码是123456 还是提示我账号密码信息错误

      1. 谢谢博主,成功更改为白色了

        非常好用,尤其这个README.md ,很美观
        https://sagit.sbwml.net/?dir=/tools/WSL2/kernel

        不过我有个bug 反馈

        https://github.com/helloxz/zdir/blob/master/functions/home.php#L146

        使用说明的 README.md 站内显示是正常的,但是如果文件名为 readme.md 小写就无法正常读取内容了,
        会显示 {“code”:0,”msg”:”\u6587\u4ef6\u4e0d\u5b58\u5728\uff01″}

        环境是 nginx 1.16.x、php7.4.4 (https://sagit.sbwml.net/template/cpu/#MainTab4)

  5. docker里面跑 alpine-nginx-php ,文件上传超过6mb,就报错。提示Server responded with 0 code.

    1. php默认的上传大小限制是2M or 8M ,上传大文件你自己必须修改 php.ini 配置文件以下两个参数

      post_max_size = 128M
      upload_max_filesize = 128M

      具体大小按照自己需求而定

  6. 你好,捐赠版是不是可以删除顶部广告?可以自定义广告么?还有一个,自带的一个什么@dear的文件夹,我删除了,为什么过一段时间还会自动创建?这个是什么文件?怎样才可以彻底删除?捐赠版怎么捐赠,你怎么看到?

    1. 1、可以自定义广告
      2、@dear这个不是Zdir自带的,确认下是在Github官方项目下载的源码吗?
      3、捐赠版直接加我的QQ:337003006

    1. 滚动通知是根据 js 预设内容显示,默认源码获取的滚动通知js 是博主的推广url,你是有这个需求去更改的话,自行用浏览器网页调试找出连接,通过grep 定位php文件位置进行修改,改成自己的通知内容直接在某一隐藏目录下载创建任意名称的 xxx.js ,并引用改js 即可显示

      JS文件demo,通知内容可以使用 html ,自行发挥
      ===============demo==================

      $(document).ready(function(){
      msg();
      });

      function clear_msg(){
      $(“#msg-content”).empty();
      }
      function msg(){
      var num = parseInt(Math.random()*(4-0+1)+0,10);;

      var content = new Array();
      content[0] = ‘通知1’;
      content[1] = ‘通知2’;
      content[2] = ‘通知3’;
      content[3] = ‘通知4’;
      content[4] = ‘通知5’;
      $(“#msg-content”).append(content[num]);
      window.setTimeout(“clear_msg()”,9800);
      window.setTimeout(“msg()”,10000);
      }

      ===============demo end===============

  7. 这个一直显示重连是怎么回事呢
    Wed Dec 18 23:52:05 2019 Restart pause, 5 second(s)
    Wed Dec 18 23:52:10 2019 WARNING: –ns-cert-type is DEPRECATED. Use –remote-cert-tls instead.
    Wed Dec 18 23:52:10 2019 Outgoing Control Channel Authentication: Using 160 bit message hash ‘SHA1’ for HMAC authentication
    Wed Dec 18 23:52:10 2019 Incoming Control Channel Authentication: Using 160 bit message hash ‘SHA1’ for HMAC authentication
    Wed Dec 18 23:52:10 2019 MANAGEMENT: >STATE:1576684330,RESOLVE,,,,,,
    Wed Dec 18 23:52:10 2019 RESOLVE: Cannot resolve host address: wf.yx.smwlm.com:53 ()
    Wed Dec 18 23:52:10 2019 MANAGEMENT: >STATE:1576684330,RESOLVE,,,,,,
    Wed Dec 18 23:52:10 2019 RESOLVE: Cannot resolve host address: wf.yx.smwlm.com:53 ()
    Wed Dec 18 23:52:10 2019 Could not determine IPv4/IPv6 protocol

  8. 点击“文件索引”,只显示“文件索引 – 该数据缓存于2019-11-22 15:16:13”,然后下面没有内容;
    而且第一次索引时,是显示“文件索引 – 该数据缓存于1970-01-01 08:00:00”,再点一次索引,时间就正常了,但还是没有内容显示。

  9. 似乎对带有符号的目录兼容性不太好。会提示目录不存在。如[]【】这类的符号。不知大家是否有这个问题。

      1. $text = file_get_contents($filePath);
        //$encodType = mb_detect_encoding($text);
        define(‘UTF32_BIG_ENDIAN_BOM’, chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));
        define(‘UTF32_LITTLE_ENDIAN_BOM’, chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));
        define(‘UTF16_BIG_ENDIAN_BOM’, chr(0xFE) . chr(0xFF));
        define(‘UTF16_LITTLE_ENDIAN_BOM’, chr(0xFF) . chr(0xFE));
        define(‘UTF8_BOM’, chr(0xEF) . chr(0xBB) . chr(0xBF));
        $first2 = substr($text, 0, 2);
        $first3 = substr($text, 0, 3);
        $first4 = substr($text, 0, 3);
        $encodType = “”;
        if ($first3 == UTF8_BOM)
        $encodType = ‘UTF-8 BOM’;
        else if ($first4 == UTF32_BIG_ENDIAN_BOM)
        $encodType = ‘UTF-32BE’;
        else if ($first4 == UTF32_LITTLE_ENDIAN_BOM)
        $encodType = ‘UTF-32LE’;
        else if ($first2 == UTF16_BIG_ENDIAN_BOM)
        $encodType = ‘UTF-16BE’;
        else if ($first2 == UTF16_LITTLE_ENDIAN_BOM)
        $encodType = ‘UTF-16LE’;

        //下面的判断主要还是判断ANSI编码的·
        if ($encodType == ”) {//即默认创建的txt文本-ANSI编码的
        $content = iconv(“GBK”, “UTF-8”, $text);
        } else if ($encodType == ‘UTF-8 BOM’) {//本来就是UTF-8不用转换
        $content = $text;
        } else {//其他的格式都转化为UTF-8就可以了
        $content = iconv($encodType, “UTF-8”, $text);
        }

        在别的地方看到,不知道是否可用

  10. 似乎视频只能在线播放mp4的,webm的就不行。可否添加更多媒体文件支持呢?

    1. 是的,只能播放.mp4和m3u8,前端解码能力有限,依赖浏览器支持更多格式不太可能。只能自行转码。

  11. 访问文件管理报错:Fatal error: Call to undefined function password_hash() in /www/wwwroot/aaa.solob.cn/functions/admin.php on line 24

  12. Warning: is_dir(): open_basedir restriction in effect. File(../..) is not within the allowed path(s): (/www/wwwroot/opt/:/tmp/:/proc/) in /www/wwwroot/opt/functions/indexes.php on line 20

    打开文件索引时报错,请问怎么解决?

    1. 如果你用的宝塔面板的话在PHP设置里面,将Warning级别的错误提示关闭,不知道生产环境宝塔为什么要默认打开dispaly error

          1. 文件索引是有缓存的(为了降低资源消耗,文件索引存在24小时缓存,您可以访问index.php?c=cache&del=cache清除当前缓存并重新生成索引。),参考下帮助文档:https://www.xiaoz.me/doc/doc-zdir/maintain

  13. 您好,有计划增加目录说明吗?就是在每个文件夹目录有个说明文档,就像这个https://cloud.b2fun.net/B:/Mirror/dd/cxthhhhh