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