用Oneindex分享你的OneDrive文件

近期发现了一个好玩的项目,用PHP即可实现列出你Onedrive网盘的目录。这样可以更有效的分享文件了。

而且它不占用服务器空间和流量,只是通过API引用OneDrive下载地址。

准备

  1. PHP5.6+ Curl支持
  2. onedrive 账号 (个人、企业版或教育版/工作或学校帐户)
    3.一个耐心的你

安装

打开项目链接 https://github.com/donwa/oneindex clone或download到你的安装目录

打开绑定的域名,输入相关信息,关于API获取,在安装页面有两个超链接,直接点进去复制即可

注意每次获取的都不一样,要保存第一个获取的,否则等到第二步时又要重新来。

然后进入后台刷新一下缓存链接即可

设置伪静态

如果是apache可以忽略这步,因为程序根目录下的.htaccess文件已经自带,如果未开启请选择开启。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)index.php?/1 [L]

如果是Nginx则需手动配置以下规则

if (!-f request_filename){
    setrule_0 1rule_0;
}
if (!-drequest_filename){
    set rule_0 2rule_0;
}
if (rule_0 = "21"){
    rewrite ^/(.*) /index.php?/$1 last;
}

设置计划任务

你是否发现每次打开都要刷新一下打开速度太慢了?
没关系,我们可以通过crontab提示刷新缓存打开。

有关crontab的安装即使用方法前面已经介绍过了。
点击这里即可查看:https://blog.nmza.net/archives/VPS-auto-reboot.html#_label0

输入

# 添加任务
crontab -e

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

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

# 退出编辑器,根据所选用的编辑器不同操作方法不一样,代码略。
```shell

## 特殊文件功能

> 在文件夹底部添加说明:  
> 在onedrive的文件夹中添加README.md文件,使用markdown语法。
> 
> 在文件夹头部添加说明:  
> 在onedrive的文件夹中添加HEAD.md 文件,使用markdown语法。  
> 
> 加密文件夹:  
> 在onedrive的文件夹中添加.password文件,填入密码,密码不能为空。  
> 
> 直接输出网页:
> 在onedrive的文件夹中添加index.html 文件,程序会直接输出网页而不列目录。
> 配合 文件展示设置-直接输出 效果更佳

## 命令行模式管理

注意这里只能在php-cli模式下处理
**清除缓存:**  
```shell
php one.php cache:clear
```shell
**刷新缓存:**  
```shell
php one.php cache:refresh
```shell
**刷新令牌:**  
```shell
php one.php token:refresh
```shell
**上传文件:**  
```shell
php one.php upload:file 本地文件 [onedrive文件]

上传文件夹:

php one.php upload:folder 本地文件夹 [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  

上传 up/ 到onedrive /test/  
php one.php upload:file up/ /test/

(怎么感觉大部分都是抄Readme.md的…..)

DEMO

本站:http://file.nmza.net/

发表评论

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