Files
Cloudflare-fileshare/readme.md
2025-05-27 13:29:38 +08:00

116 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 文件存储与分享系统
## 系统概述
这是一个基于Cloudflare Workers的文件存储与分享系统支持文件上传、下载和密码保护等功能。系统采用前后端分离架构前端使用Cloudflare Pages部署后端使用Cloudflare Workers提供API服务。
### 技术架构
- 前端纯静态HTML/CSS/JavaScript
- 后端Cloudflare Workers
- 存储Cloudflare R2
- 数据库Cloudflare D1
## 部署步骤
### 1. 环境准备
1. 安装Wrangler CLI
```bash
npm install -g wrangler
```
2. 登录Cloudflare账号
```bash
wrangler login
```
### 2. 后端部署
1. 创建R2存储桶
```bash
wrangler r2 bucket create file-share-bucket
```
2. 创建D1数据库
```bash
wrangler d1 create file-share-db
```
3. 初始化数据库表:
```bash
wrangler d1 execute file-share-db --file=schema.sql --remote
```
4. 修改`wrangler.toml`配置:
```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"
```
5. 修改main.js中内容
找到包含`frontend: "<你的前端地址>"`的内容,换成你实际上的前端地址。
6. 部署Worker
```bash
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`中的配置与实际创建的资源名称一致