155 lines
3.5 KiB
Markdown
155 lines
3.5 KiB
Markdown
# TOS上传集成说明
|
||
|
||
## 功能概述
|
||
|
||
现在图片和视频生成完成后,会自动将原始URL的文件上传到TOS对象存储,并返回TOS地址。
|
||
|
||
## 修改内容
|
||
|
||
### 1. 图片功能改进
|
||
|
||
**文件路径**: `src/api/routes/images.ts`
|
||
|
||
- 增加了 `uploadImagesToTOS()` 函数
|
||
- 修改了 `/query` 接口,当任务完成时自动处理TOS上传
|
||
- 增加了缓存机制,避免重复上传
|
||
|
||
### 2. 视频功能改进
|
||
|
||
**文件路径**: `src/api/routes/video.ts`
|
||
|
||
- 增加了 `uploadVideosToTOS()` 函数
|
||
- 修改了 `/query` 接口,当任务完成时自动处理TOS上传
|
||
- 增加了缓存机制,避免重复上传
|
||
|
||
### 3. 任务缓存改进
|
||
|
||
**文件路径**:
|
||
- `src/api/ImagesTaskCache.ts`
|
||
- `src/api/VideoTaskCache.ts`
|
||
|
||
增加了TOS处理状态跟踪:
|
||
- `isTosProcessed(taskId)`: 检查任务是否已处理TOS上传
|
||
- `markTosProcessed(taskId)`: 标记任务为已处理TOS上传
|
||
|
||
### 4. TOS服务配置
|
||
|
||
**文件路径**: `src/lib/tos/tos-service.ts`
|
||
|
||
- 支持通过环境变量配置TOS参数
|
||
- 增强了错误处理和日志记录
|
||
|
||
## 使用流程
|
||
|
||
### 图片生成流程
|
||
|
||
1. **发起生成请求**
|
||
```
|
||
POST /v1/images/generations
|
||
{
|
||
"task_id": "task_123",
|
||
"prompt": "一只可爱的猫",
|
||
"width": 1024,
|
||
"height": 1024
|
||
}
|
||
```
|
||
|
||
2. **查询任务状态**
|
||
```
|
||
GET /v1/images/query?task_id=task_123
|
||
```
|
||
|
||
3. **第一次查询**(任务完成时)
|
||
- 自动上传图片到TOS
|
||
- 返回TOS地址
|
||
```json
|
||
{
|
||
"created": 1703123456,
|
||
"data": {
|
||
"task_id": "task_123",
|
||
"url": "https://your-domain.com/images/image-1703123456-abc123.png",
|
||
"status": -1
|
||
}
|
||
}
|
||
```
|
||
|
||
4. **后续查询**
|
||
- 直接返回缓存的TOS地址
|
||
- 不会重复上传
|
||
|
||
### 视频生成流程
|
||
|
||
1. **发起生成请求**
|
||
```
|
||
POST /v1/video/generations
|
||
{
|
||
"task_id": "video_123",
|
||
"prompt": "一只猫在草地上奔跑",
|
||
"duration": 5,
|
||
"ratio": "16:9"
|
||
}
|
||
```
|
||
|
||
2. **查询任务状态**
|
||
```
|
||
GET /v1/video/query?task_id=video_123
|
||
```
|
||
|
||
3. **处理流程同图片**
|
||
- 自动上传视频到TOS
|
||
- 返回TOS地址
|
||
|
||
## 环境变量配置
|
||
|
||
需要在环境变量中配置以下TOS参数:
|
||
|
||
```env
|
||
# TOS对象存储配置
|
||
TOS_ACCESS_KEY_ID=your_access_key_id
|
||
TOS_ACCESS_KEY_SECRET=your_access_key_secret
|
||
TOS_BUCKET_NAME=your_bucket_name
|
||
TOS_SELF_DOMAIN=your_custom_domain.com
|
||
TOS_REGION=cn-beijing
|
||
TOS_ENDPOINT=tos-cn-beijing.volces.com
|
||
```
|
||
|
||
## 文件存储路径
|
||
|
||
- **图片**: `images/image-{timestamp}-{random}.png`
|
||
- **视频**: `videos/video-{timestamp}-{random}.mp4`
|
||
|
||
## 错误处理
|
||
|
||
- 如果TOS上传失败,会返回原始URL
|
||
- 错误信息会记录到日志中
|
||
- 不会影响原有功能的正常使用
|
||
|
||
## 日志记录
|
||
|
||
相关日志会记录在:
|
||
- `logs/images_task_cache.log` - 图片任务缓存日志
|
||
- `logs/video_task_cache.log` - 视频任务缓存日志
|
||
- 应用主日志 - TOS上传成功/失败日志
|
||
|
||
## 性能优化
|
||
|
||
1. **缓存机制**: 避免重复上传相同文件
|
||
2. **异步处理**: TOS上传不阻塞API响应
|
||
3. **错误兜底**: 上传失败时返回原始URL
|
||
4. **日志记录**: 便于监控和调试
|
||
|
||
## 注意事项
|
||
|
||
1. 确保TOS服务配置正确
|
||
2. 确保网络可以访问TOS服务
|
||
3. 监控TOS存储容量和费用
|
||
4. 定期清理过期文件(可选)
|
||
|
||
## 测试验证
|
||
|
||
可以通过以下方式验证功能:
|
||
|
||
1. 生成一张图片,检查返回的URL是否为TOS地址
|
||
2. 多次查询同一个task_id,确认不会重复上传
|
||
3. 检查TOS存储中是否有对应的文件
|
||
4. 测试TOS上传失败的情况下是否正常兜底 |