2025-05-27 13:33:13 +08:00
2025-05-27 13:18:59 +08:00
2025-05-27 13:33:13 +08:00
2025-05-27 13:23:47 +08:00
2025-05-27 13:18:59 +08:00
2025-05-27 13:18:59 +08:00
2025-05-27 13:29:38 +08:00
2025-05-27 13:21:03 +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. 修改main.js中内容 找到包含frontend: "<你的前端地址>"的内容,换成你实际上的前端地址。

  2. 部署Worker

wrangler deploy

3. 前端部署

  1. 修改script.js中的API地址
    找到包含<你的后端地址>的内容,换成你实际上的后端地址。
  2. 修改index.html中的API地址
    找到包含<你的后端地址>的内容,换成你实际上的后端地址。
  3. 在Cloudflare Pages中创建新项目
    • 上传压缩后的前端压缩包,不要有二级目录。
    • 设置自定义域名:设置为你实际的前端地址。

使用方法

文件上传

  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中的配置与实际创建的资源名称一致
Description
一个基于Cloudflare免费功能开发的个人文件共享系统,免费版Cloudflare账号最大每月可用10G,单文件最大100M,付费版可用额度请参考官网说明,本项目采用AGPL-V3协议,仅限个人免费试用,禁止商用!
Readme AGPL-3.0 42 MiB
Languages
JavaScript 58.6%
HTML 26%
CSS 15.4%