Files
filestoragesystem/README.md
T
2026-08-23 00:48:10 +08:00

202 lines
5.8 KiB
Markdown
Raw 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.
# 文件存储系统 (FileStorageSystem)
一个类似七牛云的文件存储系统,提供用户注册、项目隔离存储、API文件操作等功能。
## 环境配置
### 前端环境配置
#### 开发环境 (.env.development)
```
VITE_API_BASE_URL=http://localhost:8100/api/v1
VITE_APP_TITLE=云泽文件存储云平台 (开发)
VITE_APP_ENV=development
```
#### 生产环境 (.env.production)
```
VITE_API_BASE_URL=https://file.yunzer.cn/api/v1
VITE_APP_TITLE=云泽文件存储云平台
VITE_APP_ENV=production
```
### 后端配置
#### 配置文件 (go/config.yaml)
```yaml
server:
port: 8100
mode: debug
domain: https://file.yunzer.cn
```
#### 环境变量
- `FSS_SERVER_PORT`: 服务器端口
- `FSS_SERVER_MODE`: 运行模式 (debug/release)
- `FSS_SERVER_DOMAIN`: 生产环境域名
- `FSS_JWT_SECRET`: JWT密钥
- `FSS_JWT_EXPIRE`: JWT过期时间
## 功能概述
### 1. 用户系统
- **用户注册/登录**:支持邮箱/手机号注册,JWT认证
- **API密钥管理**:每个用户可生成多个API Key,用于程序化访问
- **用户信息管理**:个人资料、密码修改、账户设置
- **角色权限**:基于角色的访问控制(RBAC),灵活配置权限
- **账户安全**:登录失败锁定、密码强度要求
### 2. 项目管理
- **项目创建**:用户可创建多个独立项目(如项目A、项目B)
- **项目隔离**:每个项目拥有独立的存储空间和文件命名空间
- **项目配额**:可设置每个项目的存储容量限制
- **项目成员**(可选):支持项目级别的权限管理
### 3. 文件管理
- **文件上传**:支持单文件/批量上传,断点续传
- **文件下载**:直接下载或生成临时下载链接
- **文件删除**:软删除/硬删除,回收站机制
- **文件元数据**:文件名、大小、类型、上传时间、MD5校验
- **文件目录**:支持虚拟目录结构组织文件
- **文件访问控制**:公开/私有文件设置,访问密码保护
- **临时链接**:生成带过期时间的临时访问URL
- **文件预览**:图片、视频、文档在线预览(可选)
### 4. API接口
- **RESTful API**:标准REST风格接口
- **认证方式**:API Key + Secret签名认证
- **SDK支持**:提供Go/Python/JavaScript SDK(后期)
### 5. 存储引擎
- **本地存储**:文件存储在本地文件系统
- **元数据存储**:SQLite数据库存储文件元数据、用户信息等
- **文件去重**:基于MD5的文件去重,节省存储空间
- **存储统计**:项目/用户级别的存储使用统计
- **流量统计**:记录上传/下载流量,便于计费分析
- **自定义域名**:支持绑定自定义域名访问文件(可选)
### 6. 安全特性
- **API认证**:HMAC-SHA256签名认证
- **访问控制**:项目级别的文件访问隔离
- **文件限制**:可配置的文件大小、类型限制
### 7. 系统管理
- **系统设置**:站点名称、站点描述、Logo配置、备案信息等
- **注册开关**:控制是否开放用户注册功能
- **站点开关**:站点维护模式,临时关闭站点访问
- **操作日志**:记录用户关键操作(登录、文件操作、项目管理等)
- **系统日志**:记录系统运行日志(错误、警告、调试信息)
- **存储配置**:默认存储配额、文件大小限制、允许的文件类型
- **邮件配置**:SMTP设置,用于发送通知邮件(可选)
- **用户管理**:用户列表、封禁/解封、角色分配、密码重置
- **角色管理**:创建/编辑/删除角色,配置角色权限
- **权限管理**:查看系统权限点,按模块分组
- **API限流**:请求频率限制,防止滥用
- **Webhook回调**:文件上传/删除等事件的HTTP回调通知
- **数据备份**:数据库和文件的手动/自动备份
## 技术架构
### 后端技术栈
- **语言**:Go 1.21+
- **Web框架**:Gin (高性能HTTP框架)
- **数据库**:SQLite (嵌入式数据库)
- **ORM**:GORM (Go ORM库)
- **配置管理**:Viper
- **日志**:Zap (高性能日志库)
- **认证**:JWT + API Key签名
- **限流**:golang.org/x/time/rate (令牌桶限流)
### 前端技术栈
- **框架**:Vue 3 + TypeScript
- **UI组件**:Element Plus
- **构建工具**:Vite
- **HTTP客户端**:Axios
- **状态管理**:Pinia
## 快速开始
### 环境要求
- Go 1.21+
- SQLite 3
- Node.js 16+
- npm 或 yarn
### 后端安装和运行
```bash
# 进入Go后端目录
cd go
# 安装依赖
go mod tidy
# 运行程序
go run main.go
```
### 前端安装和运行
```bash
# 进入前端目录
cd backend
# 安装依赖
npm install
# 启动开发服务器
npm run dev
```
### 配置文件
#### 后端配置 (go/config.yaml)
```yaml
server:
port: 8100
mode: debug
domain: https://file.yunzer.cn
database:
driver: sqlite
source: ./storage/data.db
storage:
root: ./storage/files
backups: ./storage/backups
admin:
username: admin
password: admin123 # 首次运行后请修改
email: admin@example.com
role: super_admin
jwt:
secret: please-change-this-secret-key # 生产环境请修改为随机密钥
expire: 24h
log:
level: info
dir: ./storage/logs
max_days: 7
```
#### 前端配置
- 开发环境:`.env.development`
- 生产环境:`.env.production`
## 详细文档
更多详细信息请查看 [docs/README.md](docs/README.md)
## 注意事项
1. **安全性**:生产环境需要修改JWT密钥,启用HTTPS
2. **性能**:大量文件建议使用对象存储服务(如MinIO、阿里云OSS)
3. **备份**:定期备份SQLite数据库和文件存储目录
4. **监控**:建议添加Prometheus监控指标
5. **日志管理**:定期清理过期日志,避免数据库过大
6. **站点维护**:开启维护模式时,确保管理员仍可访问后台
7. **权限控制**:管理员账户需在配置文件中预设,避免权限滥用
## 许可证
MIT License