分块上传

更新: 2016-12-20

调用流程

  1. 初始化上传
  2. 上传数据块
  3. 完成上传

如果返回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 文件名, 需要做rfc3986URL编码
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校验值

HTTP内容

需要上传的文件块数据, 最大支持10MB


查询已上传的数据

POST /upload_req HTTP/1.1
Host: {上传服务器域名}
x-gk-upload-session: {session}
HTTP头字段 是否必需 说明
x-gk-upload-session 上传的会话ID

成功返回

HTTP 200

返回的内容是数值, 如: 200, 表示已上传了200字节

错误返回

HTTP 500 没有初始化上传

HTTP 401 会话参数不正常


完成上传

POST /upload_finish HTTP/1.1
Host: {上传服务器域名}
x-gk-upload-session: {session}
HTTP头字段 是否必需 说明
x-gk-upload-session 上传的会话ID

成功返回

HTTP 200 成功

HTTP 202 正在处理上传请求, 需等待一段时间再发起完成上传的请求

错误返回

HTTP 500 没有初始化上传(需要重新调用/upload_init进行初始化)

HTTP 401 会话参数不正常

HTTP 409 上传的数据不完整, 需要继续上传 (需调用/upload_req检查已上传的数据)


取消上传

POST /upload_abort HTTP/1.1
Host: {上传服务器域名}
x-gk-upload-session: {session}
HTTP头字段 是否必需 说明
x-gk-upload-session 上传的会话ID

成功返回

HTTP 200

错误返回

HTTP 500 没有初始化上传

HTTP 401 会话参数不正常