云存储微服务接口
接口目录
上传文件
POST /storage/api/upload
该接口为同步接口,上传完成后能马上得到文件 URL
表单参数
| 参数 | 描述 | 取值 |
|---|---|---|
| file | 文件 | file |
| file_name | (可选)自定义文件名,需要带上扩展名。默认用上传文件的文件名 | string |
返回字段
| 参数 | 描述 | 取值 |
|---|---|---|
| errcode | 错误码,1000 为正常 | int |
| msg | "OK" 或错误信息 | string |
| id | 文件云存储 ID | string |
| url | 文件云存储 URL | string |
返回示例:
{
"errcode": 1000,
"msg": "OK",
"id": "a4b9dnoj",
"url": "http://example.mudu.tv/a4b9dnoj-example.txt"
}
下载URL上的文件到云存储
POST /storage/api/download_url
该接口为异步接口,调用后马上返回,需要通过查询文件状态来确认是否上传完成
JSON 参数
| 参数 | 描述 | 取值 |
|---|---|---|
| file_url | 文件来源 URL | string |
| file_name | (可选)文件名,带扩展名。默认用文件来源 URL 路径的最后一部分 | string |
返回字段
| 参数 | 描述 | 取值 |
|---|---|---|
| errcode | 错误码,1000 为正常 | int |
| msg | "OK" 或错误信息 | string |
| id | 文件云存储 ID | string |
返回示例:
{
"errcode": 1000,
"msg": "OK",
"id": "a4b9dnoj"
}
获取文件列表
GET /storage/api/list
URL 参数
| 参数 | 描述 | 取值 |
|---|---|---|
| page | 页数,默认 1 | int |
| page_size | 每页个数,默认 15 | int |
返回字段
| 参数 | 描述 | 取值 |
|---|---|---|
| errcode | 错误码,1000 为正常 | int |
| msg | "OK" 或错误信息 | string |
| count | 文件总个数 | int |
| files | 云存储文件列表 | object array |
| files.id | 文件云储存 ID | string |
| files.status | 文件状态(见下) | int |
| files.source_type | 来源类型(url 或 file) | string |
| files.public_url | 文件 URL | string |
| files.file_name | 文件名 | string |
| files.file_size | 文件大小(字节数) | int |
文件状态表:
| 值 | 意义 |
|---|---|
| 0 | 初始状态 |
| 1 | 上传成功(这是最终状态) |
| 2 | 上传中 |
| 3 | 上传失败 |
| 4 | 已删除 |
返回示例:
{
"errcode": 1000,
"msg": "OK",
"count": 234,
"files": [{
"id": "dok80b1y",
"status": 1,
"source_type": "url",
"public_url": "http://example.mudu.tv/a4b9dnoj-example.mp4",
"file_name": "example.mp4",
"file_size": 68520395
}]
}
获取文件信息
GET /storage/api/get
URL 参数
| 参数 | 描述 | 取值 |
|---|---|---|
| id | 文件云储存 ID | string |
返回字段
| 参数 | 描述 | 取值 |
|---|---|---|
| errcode | 错误码,1000 为正常 | int |
| msg | "OK" 或错误信息 | string |
| file | 云存储文件 | object |
| file.id | 文件云存储 ID | string |
| file.status | 文件状态(见下) | int |
| file.source_type | 来源类型(url 或 file) | string |
| file.public_url | 文件 URL | string |
| file.file_name | 文件名 | string |
| file.file_size | 文件大小(字节数) | int |
文件状态表:
| 值 | 意义 |
|---|---|
| 0 | 初始状态 |
| 1 | 上传成功(这是最终状态) |
| 2 | 上传中 |
| 3 | 上传失败 |
| 4 | 已删除 |
返回示例:
{
"errcode": 1000,
"msg": "OK",
"file": {
"id": "dok80b1y",
"status": 1,
"source_type": "url",
"public_url": "http://example.mudu.tv/a4b9dnoj-example.mp4",
"file_name": "example.mp4",
"file_size": 68520395
}
}
删除文件信息
POST /storage/api/delete
URL 参数
| 参数 | 描述 | 取值 |
|---|---|---|
| id | 文件云储存 ID | string |
返回字段
| 参数 | 描述 | 取值 |
|---|---|---|
| errcode | 错误码,1000 为正常 | int |
| msg | "OK" 或错误信息 | string |
返回示例:
{
"errcode": 1000,
"msg": "OK"
}
初始化分片任务
POST /storage/api/init_upload_part
注意:获取到的 upload_id 用于后面 /upload_part, /complete_upload_part 和 /abort_upload_part 的 id 字段
JSON 参数
| 参数 | 描述 | 取值 |
|---|---|---|
| file_name | (必填)待上传的文件名,带扩展名 | string |
返回字段
| 参数 | 描述 | 取值 |
|---|---|---|
| errcode | 错误码,1000 为正常 | int |
| msg | "OK" 或错误信息 | string |
| upload_id | 分片上传任务 ID | string |
返回示例:
{
"errcode": 1000,
"msg": "OK",
"upload_id": "mok80b1y"
}
上传分片文件
POST /storage/api/upload_part
URL 参数
| 参数 | 描述 | 取值 |
|---|---|---|
| id | 分片上传任务 ID | string |
表单参数:
| 参数 | 描述 | 取值 |
|---|---|---|
| file | 文件 | file |
| part_number | 分片号,从 1 开始 | int |
返回字段
| 参数 | 描述 | 取值 |
|---|---|---|
| errcode | 错误码,1000 为正常 | int |
| msg | "OK" 或错误信息 | string |
返回示例:
{
"errcode": 1000,
"msg": "OK"
}
完成分片上传
POST /storage/api/complete_upload_part
URL 参数
| 参数 | 描述 | 取值 |
|---|---|---|
| id | 分片上传任务 ID | string |
JSON 参数:
| 参数 | 描述 | 取值 |
|---|---|---|
| parts_count | 总分片数,用于检查文件完整性 | int |
返回字段
| 参数 | 描述 | 取值 |
|---|---|---|
| errcode | 错误码,1000 为正常 | int |
| msg | "OK" 或错误信息 | string |
| id | 文件云储存 ID | string |
返回示例:
{
"errcode": 1000,
"msg": "OK",
"id": "dvoneo63"
}
取消分片上传
POST /storage/api/abort_upload_part
URL 参数
| 参数 | 描述 | 取值 |
|---|---|---|
| id | 分片上传任务 ID | string |
返回字段
| 参数 | 描述 | 取值 |
|---|---|---|
| errcode | 错误码,1000 为正常 | int |
| msg | "OK" 或错误信息 | string |
返回示例:
{
"errcode": 1000,
"msg": "OK"
}
获取分片上传任务
GET /storage/api/get_upload_part_task
URL 参数
| 参数 | 描述 | 取值 |
|---|---|---|
| id | 分片上传任务 ID | string |
返回字段
| 参数 | 描述 | 取值 |
|---|---|---|
| errcode | 错误码,1000 为正常 | int |
| msg | "OK" 或错误信息 | string |
| task | 分片上传任务 | object |
| task.upload_id | 分片上传任务 ID | string |
| task.status | 分片任务上传状态(定义见下表) | int |
| task.uploaded_parts | 已上传的分片号(从 1 开始) | int array |
| task.file_name | 文件名 | string |
分片任务状态表:
| 值 | 意义 |
|---|---|
| 0 | 初始状态,上传中 |
| 1 | 上传成功(这是最终状态) |
| 2 | 已取消 |
返回示例:
{
"errcode": 1000,
"msg": "OK",
"task": {
"upload_id": "mok80b1y",
"status": 0,
"uploaded_parts": [1, 2, 4, 5, 7],
"file_name": "example.mp4"
}
}
错误码
| 错误代码 | 使用模块 | 错误描述 |
|---|---|---|
| 2301 | 存储 | 参数不合法 |
| 2302 | 存储 | 上传失败:分片缺失 |
| 2303 | 存储 | 无法从提供的 URL 获取文件 |
| 2304 | 存储 | 不是有效的 m3u8 文件 |
| 2305 | 存储 | UploadID 无效 |
| 2306 | 存储 | 找不到该 user ID 对应的 token,请登录后重试 |
| 2311 | 存储 | 内部错误:创建临时文件失败 |
| 2312 | 存储 | 内部错误:修改临时文件失败 |
| 2313 | 存储 | 内部错误:删除临时文件失败 |
| 2314 | 存储 | 内部错误:无法将文件上传至云存储 |
| 2315 | 存储 | 内部错误:无法获取云存储上的对象地址 |
| 2316 | 存储 | 内部错误:无法将文件上传至云存储 |
| 2317 | 存储 | 内部错误:解析 HTTP 返回失败 |
| 2321 | 存储 | 插入文件数据失败 |
| 2322 | 存储 | 查询单个文件数据失败 |
| 2323 | 存储 | 修改文件数据失败 |
| 2324 | 存储 | 删除文件数据失败 |
| 2325 | 存储 | 查询文件数据列表失败 |
| 2331 | 存储 | 插入文件片段任务数据失败 |
| 2332 | 存储 | 查询单个文件片段任务数据失败 |
| 2333 | 存储 | 修改文件片段任务数据失败 |
| 2334 | 存储 | 删除文件片段任务数据失败 |
| 2341 | 存储 | 保存文件片段数据失败 |