datai/docs/archive/api-docs/file/FileController/0007-upload-chunk.md

128 lines
3.0 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.

# 上传文件分片
## 接口信息
- **接口名称**: 上传文件分片
- **接口路径**: /file/uploadChunk
- **请求方法**: POST
- **模块归属**: file
- **版本号**: v1.0.0
- **创建日期**: 2026-01-18
- **最后更新**: 2026-01-18
## 功能描述
上传文件的一个分片,返回分片的 ETag。需要先调用初始化分片上传接口获取 uploadId然后逐个上传文件分片。
## 请求参数
### 表单参数
| 参数名 | 类型 | 必填 | 描述 | 示例 |
|--------|------|------|------|------|
| uploadId | String | 是 | 上传 ID由初始化分片上传接口返回 | 1234567890abcdef |
| filePath | String | 是 | 文件路径,由初始化分片上传接口返回 | /upload/2026/01/18/1234567890_large-file.zip |
| partNumber | int | 是 | 分片序号,从 1 开始 | 1 |
| chunk | MultipartFile | 是 | 分片数据 | - |
## 响应数据
### 成功响应
**HTTP 状态码**: 200 OK
```json
{
"code": 200,
"message": "操作成功",
"data": {
"etag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
"partNumber": 1
}
}
```
| 字段名 | 类型 | 描述 | 示例 |
|--------|------|------|------|
| etag | String | 分片的 ETag 值,用于后续合并文件 | "d41d8cd98f00b204e9800998ecf8427e" |
| partNumber | int | 分片序号 | 1 |
### 失败响应
**HTTP 状态码**: 500 Internal Server Error
```json
{
"code": 500,
"message": "分片数据不能为空",
"data": null
}
```
```json
{
"code": 500,
"message": "上传分片失败未获取到ETag",
"data": null
}
```
## 接口示例
### 请求示例
```bash
curl -X POST "http://localhost:8080/file/uploadChunk" \
-H "Authorization: Bearer [token]" \
-F "uploadId=1234567890abcdef" \
-F "filePath=/upload/2026/01/18/1234567890_large-file.zip" \
-F "partNumber=1" \
-F "chunk=@/path/to/chunk1.dat"
```
### 响应示例
**成功**:
```json
{
"code": 200,
"message": "操作成功",
"data": {
"etag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
"partNumber": 1
}
}
```
## 错误处理
- 分片数据为空时返回错误
- uploadId 或 filePath 为空时返回错误
- partNumber 无效时返回错误
- 上传失败时返回错误
- 未获取到 ETag 时返回错误
## 注意事项
- 分片序号必须从 1 开始,连续递增
- 每个分片上传成功后会返回 ETag
- ETag 必须妥善保存,用于后续合并文件
- 分片大小建议为 5MB - 100MB
- 需要保存所有分片的 ETag 和 partNumber用于合并
- 使用系统配置的默认存储桶
## 相关接口
- [初始化分片上传](./0006-init-upload.md) - 初始化分片上传
- [完成分片上传](./0008-complete-upload.md) - 完成分片上传并合并文件
- [统一上传接口](./0002-upload.md) - 普通文件上传(非分片)
## 实现细节
- 使用 `StorageService.uploadPart()` 上传分片
- 返回的 ETag 是分片的唯一标识
- 分片序号必须从 1 开始,连续递增
- 使用系统配置的默认存储桶
- ETag 格式通常为带引号的字符串