jimeng-free-api/TOS_UPLOAD_INTEGRATION.md

155 lines
3.5 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.

# 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.webp",
"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}.webp`
- **视频**: `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上传失败的情况下是否正常兜底