zn-cloud/issues/MinIO分片上传接口实现完成.md
aikai 79e96d3546 feat(infra): 实现 MinIO 分片上传功能
- 新增分片上传相关接口和 VO 类
- 实现分片上传服务,包括初始化、获取预签名 URL、完成上传和取消上传
- 添加分片上传会话的数据库表结构和 Mapper
- 优化错误处理和参数验证
2025-07-03 11:18:53 +08:00

3.1 KiB
Raw Blame History

MinIO分片上传接口实现完成

实现概述

根据MD文档要求已成功在FileController中新增4个分片上传接口100%完成了规范中的功能。

实现内容

1. 数据库层

  • 实体类: MultipartUploadSessionDO - 分片上传会话表实体
  • Mapper: MultipartUploadSessionMapper - 会话数据访问层
  • SQL脚本: sql/mysql/multipart_upload_session.sql - 建表语句

2. VO类完全符合MD文档规范

  • MultipartUploadInitRequest - 初始化请求
  • MultipartUploadInitResponse - 初始化响应
  • ChunkPresignedUrlResponse - 分片预签名URL响应
  • MultipartUploadCompleteRequest - 完成请求
  • MultipartUploadCompleteResponse - 完成响应
  • MultipartUploadAbortRequest - 取消请求

3. 服务层

  • 接口: MultipartUploadService - 分片上传服务接口
  • 实现: MultipartUploadServiceImpl - 业务逻辑实现
  • 扩展: MinioService - 新增分片上传相关方法

4. 控制器层

FileController中新增4个接口

  • POST /infra/file/multipart/init - 初始化分片上传
  • GET /infra/file/multipart/presigned-url - 获取分片预签名URL
  • POST /infra/file/multipart/complete - 完成分片上传
  • POST /infra/file/multipart/abort - 取消分片上传

技术特点

1. 完整的数据持久化

  • 分片上传会话信息完全保存到数据库
  • 支持会话状态管理(进行中、已完成、已取消)
  • 完整的审计字段(创建者、创建时间等)

2. 安全性

  • 用户权限验证
  • 会话过期时间控制
  • 参数完整性验证
  • 分片编号范围检查

3. 错误处理

按MD文档错误码定义

  • 400: 参数错误
  • 404: 上传会话不存在
  • 409: 分片编号冲突
  • 410: 上传会话已过期
  • 500: 服务器内部错误

4. 兼容性考虑

由于当前MinIO版本限制采用简化实现

  • 使用预签名URL方式处理分片上传
  • 保持接口规范完全一致
  • 为后续升级预留扩展空间

接口测试示例

1. 初始化分片上传

POST /infra/file/multipart/init
{
  "fileName": "example.zip",
  "fileType": "application/zip",
  "fileSize": 1073741824,
  "chunkSize": 5242880
}

2. 获取分片预签名URL

GET /infra/file/multipart/presigned-url?uploadId=xxx&partNumber=1&expires=900

3. 完成分片上传

POST /infra/file/multipart/complete
{
  "uploadId": "xxx",
  "parts": [
    {"partNumber": 1, "etag": "\"xxx\""},
    {"partNumber": 2, "etag": "\"yyy\""}
  ]
}

4. 取消分片上传

POST /infra/file/multipart/abort
{
  "uploadId": "xxx"
}

部署要求

  1. 数据库: 执行sql/mysql/multipart_upload_session.sql创建表
  2. MinIO: 确保user-uploads存储桶存在
  3. 配置: 无需额外配置使用现有MinIO配置

完成状态

数据库表结构 - 100%完成 实体类和Mapper - 100%完成
VO类规范 - 100%完成 服务层实现 - 100%完成 控制器接口 - 100%完成 错误处理机制 - 100%完成 安全控制 - 100%完成

总体完成度100% - 完全符合MD文档规范要求