2025-05-27 13:18:59 +08:00
2025-05-27 13:18:59 +08:00
2025-05-27 13:18:59 +08:00
2025-05-27 13:18:59 +08:00
2025-05-27 13:18:59 +08:00
2025-05-27 13:18:59 +08:00
2025-05-27 13:18:59 +08:00
2025-05-27 13:18:59 +08:00

文件存储与分享系统

系统概述

这是一个基于Cloudflare Workers的文件存储与分享系统支持文件上传、下载和密码保护等功能。系统采用前后端分离架构前端使用Cloudflare Pages部署后端使用Cloudflare Workers提供API服务。

技术架构

  • 前端纯静态HTML/CSS/JavaScript
  • 后端Cloudflare Workers
  • 存储Cloudflare R2
  • 数据库Cloudflare D1

部署步骤

1. 环境准备

  1. 安装Wrangler CLI
npm install -g wrangler
  1. 登录Cloudflare账号
wrangler login

2. 后端部署

  1. 创建R2存储桶
wrangler r2 bucket create file-share-bucket
  1. 创建D1数据库
wrangler d1 create file-share-db
  1. 初始化数据库表:
wrangler d1 execute file-share-db --file=schema.sql --remote
  1. 修改wrangler.toml配置:
name = "file-share"
main = "main.js"

[[r2_buckets]]
binding = "file_share_bucket"
bucket_name = "file-share-bucket"

[[d1_databases]]
binding = "DB"
database_name = "file-share-db"
database_id = "your-database-id"
  1. 部署Worker
wrangler deploy

3. 前端部署

  1. 修改script.js中的API地址
const API_BASE_URL = 'https://file.ssplus.cn';
// 将所有API调用改为完整URL
fetch(`${API_BASE_URL}/upload`, ...)
  1. 在Cloudflare Pages中创建新项目
    • 连接GitHub仓库
    • 设置构建命令:不需要(静态网站)
    • 设置构建输出目录:/(根目录)
    • 设置自定义域名:fileshare.ssplus.cn

使用方法

文件上传

  1. 访问前端网站(例如:https://fileshare.ssplus.cn
  2. 点击"选择文件"按钮选择要上传的文件
  3. 可选:设置文件访问密码
  4. 点击"上传"按钮
  5. 上传成功后获取文件分享链接

文件下载

  1. 访问文件分享链接
  2. 如果文件设置了密码,输入密码
  3. 点击"下载"按钮开始下载

API文档

上传文件

  • 端点:POST /upload
  • 请求体FormData格式
    • file:文件数据
    • password:(可选)文件密码
  • 响应JSON格式
    • success:布尔值,表示上传是否成功
    • fileId:字符串,文件唯一标识符

下载文件

  • 端点:GET /file/:fileId
  • URL参数
    • fileId:文件唯一标识符
  • 查询参数:
    • password:(可选)文件密码

注意事项

  1. 确保Cloudflare账号已启用Workers和Pages服务
  2. 配置正确的CORS设置允许前端域名访问API
  3. 定期检查R2存储使用量和D1数据库容量
  4. 建议设置文件大小限制和存储时间限制
  5. 保持wrangler.toml中的配置与实际创建的资源名称一致 当前模型请求量过大,请求排队约 1 位,请稍候或切换至其他模型问答体验更流畅。
Description
一个基于Cloudflare免费功能开发的个人文件共享系统,免费版Cloudflare账号最大每月可用10G,单文件最大100M,付费版可用额度请参考官网说明,本项目采用AGPL-V3协议,仅限个人免费试用,禁止商用!
Readme AGPL-3.0 42 MiB
Languages
JavaScript 58.6%
HTML 26%
CSS 15.4%