用 worker 便捷的分发你OSS中的文件
前言
给客户交付定制化的客户端软件的时候,有时候文件比较大微信这种IM软件发不了,走网盘又都需要VIP会员不然就是小水管,让客户开会员这体验也不好。
再加上我个人平时会把一些重要的资料和常用的文件放在aliyun oss中,重要资料用深度冷归档存储备份,常用的、要提供下载的放在标准存储(不存电影啥的,这个比各种XX网盘的vip要便宜多了)

警告
注意这个分享一遍用于点对点分享,如果发不在公共环境(如论坛等)将会产生昂贵的出相流量账单,项目作者概不负责
实现
- 前端:Vue 3 + TypeScript + Naive UI
- 后端:Cloudflare Worker + TypeScript
- 存储:阿里云 OSS
- 构建工具:Vite
- 部署工具:Wrangler
cloudflare worker runtime
一开始并秉持着不要重复造轮子的想法优先考虑了阿里云官方实现的node sdk ali-oss, 结果发现运行报错,报找不到http:request,照道理这个是node的标准库,不应该找不到才是,后来通过阅读cloudflare官方文档发现,worker的runtime是一个裁切过的沙箱环境, 根据文档,发现尚未对http:request做兼容处理,那没办法只能自己搓请求算签名了,在用cloudflare提供的fetch方法请求。
worker runtime的其他API兼容情况,请查看官方文档 Node.js compatibility
写于2025.12.26
根据官网最新描述,目前已对
http:request进行兼容。 后续会尝试使用官方SDK替换目前手搓的接口。
写于2026.02.10
更新了上传功能,使用预签名URL,在前端上传,过大文件可能回出现问题未经过测试。
具体实现
请看 GitHub
使用方法
- 请按照项目中
readme.md文档完成部署。 - 由于
安全偷懒对原因,没做文档选择界面,请在阿里云的OSS控制台中复制路径,进行长效URL的签发。
已知问题
由于cloudflare kv同步延迟有概率偶发使用密码访问文件第一次尝试会失败的情况。