datai/docs/archive/api-docs/file/FileController/0006-init-upload.md

116 lines
2.8 KiB
Markdown
Raw Permalink 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/initUpload
- **请求方法**: POST
- **模块归属**: file
- **版本号**: v1.0.0
- **创建日期**: 2026-01-18
- **最后更新**: 2026-01-18
## 功能描述
初始化分片上传,生成上传 ID 和文件路径,用于后续的分片上传操作。支持大文件分片上传,提高上传效率和可靠性。
## 请求参数
### 表单参数
| 参数名 | 类型 | 必填 | 描述 | 示例 |
|--------|------|------|------|------|
| fileName | String | 是 | 文件名 | large-file.zip |
| fileSize | Long | 是 | 文件大小(字节) | 1073741824 |
## 响应数据
### 成功响应
**HTTP 状态码**: 200 OK
```json
{
"code": 200,
"message": "操作成功",
"data": {
"uploadId": "1234567890abcdef",
"filePath": "/upload/2026/01/18/1234567890_large-file.zip",
"fileName": "large-file.zip"
}
}
```
| 字段名 | 类型 | 描述 | 示例 |
|--------|------|------|------|
| uploadId | String | 上传 ID用于后续分片上传和合并 | 1234567890abcdef |
| filePath | String | 文件存储路径 | /upload/2026/01/18/1234567890_large-file.zip |
| fileName | String | 文件名 | large-file.zip |
### 失败响应
**HTTP 状态码**: 500 Internal Server Error
```json
{
"code": 500,
"message": "文件名或文件大小不能为空",
"data": null
}
```
## 接口示例
### 请求示例
```bash
curl -X POST "http://localhost:8080/file/initUpload" \
-H "Authorization: Bearer [token]" \
-F "fileName=large-file.zip" \
-F "fileSize=1073741824"
```
### 响应示例
**成功**:
```json
{
"code": 200,
"message": "操作成功",
"data": {
"uploadId": "1234567890abcdef",
"filePath": "/upload/2026/01/18/1234567890_large-file.zip",
"fileName": "large-file.zip"
}
}
```
## 错误处理
- 文件名为空时返回错误
- 文件大小为空或小于等于 0 时返回错误
- 初始化上传失败时返回错误
## 注意事项
- 文件路径格式为:/upload/{yyyy}/{MM}/{dd}/{timestamp}_{fileName}
- 使用系统配置的默认存储
- 上传 ID 用于后续的分片上传和合并操作
- 分片上传适用于大文件(通常大于 100MB
- 初始化成功后需要调用上传分片接口上传各个分片
## 相关接口
- [上传文件分片](./0007-upload-chunk.md) - 上传文件分片
- [完成分片上传](./0008-complete-upload.md) - 完成分片上传并合并文件
- [统一上传接口](./0002-upload.md) - 普通文件上传(非分片)
## 实现细节
- 使用 `StorageService.initMultipartUpload()` 初始化分片上传
- 文件路径包含日期目录yyyy/MM/dd
- 文件名前缀使用时间戳避免冲突
- 使用系统配置的默认存储桶
- 返回的 uploadId 必须妥善保存,用于后续操作