- 完成REQ-010-17(性能优化和限流处理)的所有6个阶段 - 创建ADR文档:0026-performance-optimization.md - 创建Prompt文档:027-performance-optimization.md - 创建会话记录:20260119-performance-optimization.md - 创建变更记录:20260119-performance-optimization.md - 创建复盘报告:20260119-performance-optimization-retro.md - 更新index.md和CHANGELOG.md - 完成REQ-010-2(基础实体类和Mapper创建)的前3个阶段 - 更新ADR文档:0011-entity-mapper-create.md - 创建Prompt文档:002-entity-mapper-create.md - 更新index.md 所有文档均按照SSOT方法论创建,包括需求定义、架构决策、提示词资产化、执行会话、变更记录和闭环复盘。
2.7 KiB
2.7 KiB
统一下载接口
接口信息
- 接口名称: 统一下载接口
- 接口路径: /file/download 或 /file/{storageType}/{bucketName}/download
- 请求方法: GET
- 模块归属: file
- 版本号: v1.0.0
- 创建日期: 2026-01-18
- 最后更新: 2026-01-18
功能描述
提供统一的文件下载接口,支持指定存储类型和存储桶,也可以使用默认存储。下载成功后直接返回文件流。
请求参数
路径参数
| 参数名 | 类型 | 必填 | 描述 | 示例 |
|---|---|---|---|---|
| storageType | String | 否 | 存储类型,不传则使用默认存储 | minio, local, aliyun-oss |
| bucketName | String | 否 | 存储桶名称,不传则使用默认存储桶 | primary, backup |
查询参数
| 参数名 | 类型 | 必填 | 描述 | 示例 | 默认值 |
|---|---|---|---|---|---|
| filePath | String | 是 | 文件路径 | upload/1234567890_test.jpg | - |
响应数据
成功响应
HTTP 状态码: 200 OK
Content-Type: application/octet-stream
直接返回文件流,浏览器会自动触发下载。
失败响应
HTTP 状态码: 200 OK
Content-Type: text/plain;charset=UTF-8
返回错误信息文本:
下载失败: 文件不存在
接口示例
请求示例
使用默认存储:
curl -X GET "http://localhost:8080/file/download?filePath=upload/1234567890_test.jpg" \
-H "Authorization: Bearer [token]" \
-o downloaded_file.jpg
指定存储类型和存储桶:
curl -X GET "http://localhost:8080/file/minio/primary/download?filePath=upload/1234567890_test.jpg" \
-H "Authorization: Bearer [token]" \
-o downloaded_file.jpg
响应示例
成功: 返回文件流,浏览器自动下载文件
失败: 返回错误信息文本
错误处理
- 文件不存在时返回错误信息
- 存储类型或存储桶不存在时返回错误
- 文件路径为空时返回错误
- 无权限访问文件时返回错误
注意事项
- 该接口直接返回文件流,不是 JSON 格式
- 浏览器会自动触发文件下载
- 错误时返回纯文本错误信息
- 支持多种存储类型:local、minio、aliyun-oss 等
- 不指定存储类型时使用系统配置的默认存储
相关接口
实现细节
- 使用
StorageService.downLoad()方法下载文件 - 设置响应 Content-Type 为 application/octet-stream
- 错误时设置 Content-Type 为 text/plain;charset=UTF-8
- 支持大文件下载,使用流式传输避免内存溢出