逐个上传分片

最近更新时间:2020-02-12 11:22:48

我的收藏
注意
您目前查阅的是历史版本 API 文档,已不再更新和维护,我们建议您查阅新版 API 文档

描述

使用 API 对大于 20 MB 的文件进行逐片上传之前,需要先使用「初始化分片上传」API,从腾讯云获取到分片上传所需的参数(session 和 slice_size)。
前置条件:指定目录已存在,且已获得分片上传所需参数(session 和 slice_size)。
分片上传使用流程说明
1. 发送「初始化分片上传」请求。
2. 腾讯云会判断文件的上传状态,若未完成上传,会返回-4019错误,用户需调用查询上传分片接口查询已经上传完的分片,并进行断点续传的操作;若文件从未传输过,则返回用户上传的 session。
3. 设置 session 和 offset 参数,构造「逐个分片上传」请求,逐片上传后续文件。
4. 循环执行第 3 步直到文件的分片数据上传完成。
5. 调用finish接口结束分片上传。

请求

请求语法

POST /files/v2/<appid>/<bucket_name>[/dir_name]/<file_name> HTTP/1.1
Host: <Region>.file.myqcloud.com
Content-Type: multipart/form-data
Authorization: <multi_effect_signature>
说明
<箭头括号>表示必须替换为有效值的变量,[英文方括号]表示可选的命令或参数。

请求内容

参数名称
必选
类型
描述
op
String
操作类型,填 “upload_slice_data”
filecontent
Binary
文件内容
session
String
唯一标识此文件传输过程的 ID,由后台下发, 调用方透传
offset
Int 64
本次分片位移

返回

返回内容

参数名称
必选
类型
描述
code
Int
服务端返回码
message
String
服务端提示内容
data
数据集合
服务器返回的应答数据
data 数据集合:
参数名称
必选
类型
描述
session
String
唯一标识此文件传输过程的 ID
offset
Int 64
请求包体里的传输的位移,调用方如果用多线程等方式传输,可以用来唯一确定本次分片结果

示例

逐个分片上传

请求

POST /files/v2/10055004/accesslog/testfolder/111.txt HTTP/1.1
Host: sh.file.myqcloud.com
Authorization: uusZlBVdpHf800YuKImvK5zvw75hPTEwMDU1MDA0Jms9QUtJRHpuOHd3S3VYanhpeFFBa1JCQzJEUlhCdFBkN0NybEpRJmU9MTQ3MjY0Nzc4MCZ0PTE0NzI2NDc2MDAmcj0xMDYwMzQ1OTM4JmY9JmI9YWNjZXNzbG9n
Content-Length: 37406
Content-Type: multipart/form-data; boundary=----------------------------adb78d5a54eb

------------------------------adb78d5a54eb
Content-Disposition: form-data; name="op"

upload_slice_data
------------------------------adb78d5a54eb
Content-Disposition: form-data; name="session"

58ccd1b3120e85c4ebb7b786154408df4fe22230cb8f328d41599b237661855d6242793ba2481c1ac0b1277051003cab
------------------------------adb78d5a54eb
Content-Disposition: form-data; name="offset"

0
------------------------------adb78d5a54eb
Content-Disposition: form-data; name="filecontent"

......G.E2...Q..l..E.i..U....w.o..v.....U2
(此处忽略文件内容)
------------------------------adb78d5a54eb--

返回

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 175
Date: Wed Aug 31 20:46:40 2016
Server: tencent-cos

{
"code": 0,
"message": "SUCCESS",
"data": {
"datalen": 36864,
"offset": 0,
"session": "58ccd1b3120e85c4ebb7b786154408df4fe22230cb8f328d41599b237661855d6242793ba2481c1ac0b1277051003cab"
}
}