分块上传
更新: 2016-12-20
调用流程
如果返回500或409错误, 需要调用接口查询已上传的数据, 终止上传调用取消上传
初始化上传
POST /upload_init?org_client_id={org_client_id} HTTP/1.1
Host: {上传服务器域名}
x-gk-upload-filename: {文件名}
x-gk-upload-pathhash: {文件唯一标识}
x-gk-upload-filehash: {文件内容sha1值}
x-gk-upload-filesize: {文件大小}
x-gk-token: {token}
HTTP头字段 | 是否必需 | 说明 |
---|---|---|
x-gk-upload-filename | 是 | 文件名, 需要做rfc3986 URL编码 |
x-gk-upload-pathhash | 是 | 文件唯一标识, 上传文件接口返回的hash |
x-gk-upload-filehash | 是 | 文件内容sha1值, 40字节, 英文字母小写 |
x-gk-upload-filesize | 是 | 文件大小 |
x-gk-token | 否 | 用户access_token , 使用库文件API时不需要传 |
URL参数 | 是否必需 | 说明 |
---|---|---|
org_client_id | 否 | 库授权ID, 使用库文件API时, 必须要传 |
成功返回
HTTP 200
{
"session": 上传的会话ID
}
HTTP 202 秒传完成无需调用后续接口
错误返回
HTTP 400 缺少参数
上传数据块
PUT /upload_part HTTP/1.1
Host: {上传服务器域名}
x-gk-upload-session: {session}
x-gk-upload-range: {range}
x-gk-upload-crc: {crc}
HTTP头字段 | 是否必需 | 说明 |
---|---|---|
x-gk-upload-session | 是 | 上传的会话ID |
x-gk-upload-range | 是 | 当前块位置, 例如: 0-199 表示第一个字节到第200个字节的数据 |
x-gk-upload-crc | 否 | 数据块的crc校验值, 值为无符号32位int型 |
HTTP内容
需要上传的文件块数据, 最大支持10MB
成功返回
HTTP 200 分块上传成功
HTTP 202 服务端的临时文件已完整, 需调用 完成上传 接口
错误返回
HTTP 401 session参数错误
HTTP 400
- crc参数错误
{
"error_code": 40001,
"error_msg": "part crc mismatch:23857631 expect 12856363"
}
- range参数和上传的分块大小不一致
{
"error_code": 40002,
"error_msg": "part length error:2049 expect 2048"
}
HTTP 409 上传的分块与服务端的临时文件不匹配, 返回的expect
为服务端期望的分块起始位置
{
"error_code": 40900,
"error_msg": "range begin:0 expect:2048",
"expect": 2048
}
HTTP 410 服务端的上传临时文件正在被操作, 无法写入分块
HTTP 416 range参数错误
HTTP 500 服务器异常, 分块写入失败
查询已上传的数据
POST /upload_req HTTP/1.1
Host: {上传服务器域名}
x-gk-upload-session: {session}
HTTP头字段 | 是否必需 | 说明 |
---|---|---|
x-gk-upload-session | 是 | 上传的会话ID |
成功返回
HTTP 200
返回的内容是数值, 如: 2048
, 表示已上传了2048字节
错误返回
HTTP 500 没有初始化上传
HTTP 401 session参数错误
完成上传
POST /upload_finish HTTP/1.1
Host: {上传服务器域名}
x-gk-upload-session: {session}
HTTP头字段 | 是否必需 | 说明 |
---|---|---|
x-gk-upload-session | 是 | 上传的会话ID |
成功返回
HTTP 200 成功
HTTP 202 正在处理上传请求, 需等待一段时间再发起完成上传的请求
错误返回
HTTP 500 没有初始化上传(需要重新调用 初始化上传 接口)
HTTP 401 session参数错误
HTTP 409 上传的数据不完整, 需要继续上传 (需调用 查询已上传的数据 接口)
取消上传
POST /upload_abort HTTP/1.1
Host: {上传服务器域名}
x-gk-upload-session: {session}
HTTP头字段 | 是否必需 | 说明 |
---|---|---|
x-gk-upload-session | 是 | 上传的会话ID |
成功返回
HTTP 200
错误返回
HTTP 500 没有初始化上传
HTTP 401 session参数错误