云存储微服务接口
接口目录
上传文件
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 | 存储 | 保存文件片段数据失败 |