English | 中文
基于 Cloudflare Worker 的阿里云 OSS 文件分享系统,提供简单易用的文件分享功能,支持密码保护和链接过期时间设置。
- 基于 Cloudflare Worker 部署,无需服务器
- 支持阿里云 OSS 对象存储
- 文件分享链接支持密码保护
- 自定义分享链接过期时间
- 支持 TOTP 双因素认证登录,后快捷创建分享链接
- 响应式 Vue 3 前端界面
- 使用 TypeScript 开发,类型安全
- 前端:Vue 3 + TypeScript + Naive UI
- 后端:Cloudflare Worker + TypeScript
- 存储:阿里云 OSS
- 构建工具:Vite
- 部署工具:Wrangler
- Node.js 环境
- Yarn 包管理器
- 阿里云 OSS 账号和 Bucket
- Cloudflare 账号
yarn- 复制
wrangler.example.jsonc为wrangler.jsonc
cp wrangler.example.jsonc wrangler.jsonc- 编辑
wrangler.jsonc文件,配置以下参数:
- 设置敏感信息为 Cloudflare Worker 密钥(不要直接写在配置文件中),本地调试放置在
.dev.vars文件中,遵循dotenv格式
wrangler secret put ADMIN_PASSWORD
# 输入管理员密码
wrangler secret put TOTP_SECRET
# 输入TOTP密钥(用于双因素认证)
wrangler secret put ALIYUN_OSS_AK
# 输入阿里云AccessKey ID
wrangler secret put ALIYUN_OSS_AS
# 输入阿里云AccessKey Secretwrangler kv:namespace create OSS_SHARE_ID将输出的 ID 复制到 wrangler.jsonc 的 kv_namespaces 配置中。
yarn devyarn previewyarn deploy- 管理员登录:访问应用首页,使用配置的管理员密码和 TOTP 验证码登录
- 创建分享链接:上传文件到阿里云 OSS,然后在应用中创建分享链接,设置密码和过期时间
- 分享给他人:将生成的链接分享给他人,对方需要输入密码才能访问和下载文件
- 文件下载:用户通过链接访问,输入密码后可以查看文件信息并下载
系统配置了定时任务(每6小时执行一次),用于清理过期的分享链接:
"triggers": {
"crons": [
"0 */6 * * *"
]
}
- 敏感信息(密码、密钥等)应使用 Cloudflare Worker 的 Secret 功能存储,不要硬编码在配置文件中
- 确保阿里云 OSS 的 Bucket 权限配置正确,建议使用专门的 AccessKey 并限制其权限
如需扩展支持其他对象存储服务,可以实现 OssStorage 接口:
export interface OssStorage {
getFileInfo(uri: string): Promise<FileInfo>
}然后在 file.ts 控制器中添加相应的处理逻辑。
欢迎贡献代码和建议。请在 GitHub 上创建 Issue 或 Pull Request。
{ // ... 其他配置 ... "kv_namespaces": [ { "binding": "OSS_SHARE_ID", "id": "你的KV命名空间ID" } ], "vars": { "ALIYUN_OSS_END_POINT": "oss-<region>.aliyuncs.com", // 替换为你的阿里云OSS地域节点 "ALIYUN_OSS_BUCKET": "你的Bucket名称", "ALIYUN_OSS_REGION": "你的地域", "DOWNLOAD_LINK_TIMEOUT": "3600" // 下载链接有效期(秒) } }