Onedrive Directory Index

功能

1、不用服务器空间,不走服务器流量,

2、直接列onedrive目录,文件直链下载。

特色

1、响应式,支持小屏设备

2、图片在线预览

3、视频在线播放

4、代码在线查看(js、css、html、sh、php、java、md等)

5、README.md 支持,解析各目录下(onedirive目录下) README.md 文件,在页面尾部展示。

demo

https://xn.tn

要求

1、PHP空间,PHP 5.6+ 打开curl支持

2、onedrive business 账号 (企业版或教育版)

3、oneindex 程序

github地址:https://github.com/donwa/oneindex

下载:oneindex.zip

安装

1、复制oneindex到服务器,设置config/、config/base.php 、 cache/ 可读写

2、浏览器访问、绑定账号

3、可以使用

计划任务

[可选]推荐配置,非必需。后台定时刷新缓存,可增加前台访问的速度

# 每小时刷新一次token
0 * * * * /具体路径/php /程序具体路径/one.php token:refresh

# 每十分钟后台刷新一遍缓存
*/10 * * * * /具体路径/php /程序具体路径/one.php cache:refresh

特殊文件实现功能

README.mdHEAD.md.password特殊文件使用

可以参考https://github.com/donwa/oneindex/tree/files

在文件夹底部添加说明

在onedrive的文件夹中添加README.md文件,使用markdown语法。

在文件夹头部添加说明

在onedrive的文件夹中添加HEAD.md 文件,使用markdown语法。

加密文件夹

在onedrive的文件夹中添加.password文件,填入密码,密码不能为空。

命令行功能

仅能在php cli模式下运行

清除缓存

php one.php cache:clear

刷新缓存

php one.php cache:refresh

刷新令牌

php one.php token:refresh

上传文件

php one.php upload:file 本地文件 [onedrive文件]

例如:

//上传demo.zip 到onedrive 根目录  
php one.php upload:file demo.zip  

//上传demo.zip 到onedrive /test/目录  
php one.php upload:file demo.zip /test/  

//上传demo.zip 到onedrive /test/目录并命名为 d.zip
php one.php upload:file demo.zip /test/d.zip  

可配置项

配置在 config/base.php 文件中:

onedrive共享的起始目录

'onedrive_root'=> '', //默认为根目录

如果想只共享onedrive下的 /document/share/ 目录

'onedrive_root'=> '/document/share', //最后不带 '/'

去掉链接中的 /?/

需要添加apache/nginx/iis的rewrite的配置文件 参考程序根目录下的:.htaccessnginx.confWeb.config

  //在config/base.php 中
  'root_path' => '?' 

改为

    'root_path' => '' 

nginx图片404问题,参考https://github.com/donwa/oneindex/issues/14

缓存时间

初步测试直链过期时间为一小时,默认设置为:

  'cache_expire_time' => 3600, //缓存过期时间 /秒
  'cache_refresh_time' => 600, //缓存刷新时间 /秒

如果经常出现链接失效,可尝试缩短缓存时间,如:

  'cache_expire_time' => 300, //缓存过期时间 /秒
  'cache_refresh_time' => 60, //缓存刷新时间 /秒

设置缓存模式为sqlite

'cache_type'=> 'sqlite'  // file | sqlite

Q&A

Q:需要企业版或教育版的全局管理员?

A:不需要,全局管理员开出来的子账号就可以,不过该域名在office365必须要有管理员

Q:文件上传后,不能即时在程序页面显示出来?

A:有缓存,可以在config/base.php设置缓存时间。

Q:能否使用自己的client_id、client_secret?

A:参考:https://github.com/donwa/oneindex/wiki/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E8%87%AA%E5%B7%B1%E7%9A%84client_id%E3%80%81client_secret

感谢 moeclub 提供的 client_id 和 client_secret,以实现一键绑定