OneDrive Index ( Cloudflare Worker )

利用 Cloudflare Worker 配合 OneDrive 的 API 做了一个分享盘的小工具。 Office 365 家庭车 1T 够大不贵,用作分享不错。

演示地址:storage.idx0.workers.dev

Github地址https://github.com/heymind/OneDrive-Index-Cloudflare-Worker (修改版,支持加密功能)

https://github.com/djnwzs/OneDrive-Index-Cloudflare-Worker (修改版,支持预览)

 

使用教程:

1、打开链接新建一个 APP https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade

redirect_uri设置成 https://heymind.github.io/tools/microsoft-graph-api-auth 。

 

2、在 Certificates & secrets 面板创建一个新的 secret。

3、在 API permissions 面板, 添加以下权限 offline_access, Files.Read, Files.Read.All。(此权限可以在Microsoft Graph中找到)

4、使用这个工具 microsoft-graph-api-auth 获取 refresh_token 参数。

5、在 Cloudflare Worker 管理页面创建一个新的 Worker ,粘贴 index.js 中的代码并替换相关参数。

*6. 访问密码设置(默认关闭):

1
2
3
const AUTH_ENABLED = true
const NAME = "admin"
const PASS = "password"

新特性 V1.1

  • 中转下载

利用 Cloudflare 服务器中转 OneDrive 中文件的下载,以提高中国大陆的下载体验。已知问题,无法显示下载进度。

在配置中开启 proxyDownload 功能,在文件直链路径后面加 ?proxied 即可开启,例如: https://storage.idx0.workers.dev/Other/zero_file?proxied

( Cloudflare 的速度也挺随缘的… )

  • 缓存功能

利用 Cloudflare CDN 来缓存 OneDrive 中文件,目前有两种缓存模式:

整个文件缓存: 文件会先完整传输到 Cloudflare 的服务器后再返回给客户端。文件太大可能超过 Cloudflare Worker 限制的单次请求运行时间。

chunk 缓存: 流式传输与缓存,无法正确显示 Content-Length。

在配置中开启 cache 功能,可以配置两种缓存模式的选择以及启用缓存的路径地址。

  • 小文件上传

可以利用这个工具直接上传小文件到 OneDrive 上 ( 小于 4MB ,OneDrive API 的限制,比这个大就得创建 upload session 反正很麻烦 )

在配置中开启 upload 功能,并设置一个密钥 key ( 防止游客上传文件 )。

比如:POST https://storage.idx0.workers.dev/Images/?upload=<filename>&key=<key>

 

注意:开启该功能需要 Files.ReadWrite 权限

 

  • 缩略图

对于图片文件,可以直接获取不同尺寸的缩略图。 比如:https://storage.idx0.workers.dev/Images/public-md-image-20191010113652775.png?thumbnail=mediumSquare

可用的取值参见:https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_list_thumbnails?view=odsp-graph-online#size-options

 

没错,这就是个好用的博客图床!

同时开启缓存功能和小文件上传功能后,这就是个自建图床。 配合缩略图功能,亦可提升博客页面在不同场景下的加载体验。

 

 

作者:heymind

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。