上传回调处理(Upload CallBack Processing)

最近更新时间:2020-06-22 10:14:54

PUT Object,COMPLETE MULTIPART UPLOAD

描述

在调用Put Object,Complete Multipart Upload接口时,可携带相关的Callback参数,实现上传回调处理(Upload CallBack Processing,UCP)。

客户端将文件及相关Callback请求头上传到KS3后,KS3会通过POST方法向用户的回调地址POST一段json数据,此json数据为客户端传入的x-kss-callbackbody请求头填充变量后转化得来。用户服务端正确处理回调后返回{"result":true},如果回调处理错误返回{"result":false}则表示文件上传失败,如果用户服务端没有返回任何消息,则进入超时等待,默认等待时间为3秒,重试两次。只有在KS3服务端收到{"result":true}时,文件才真正上传成功。
支持的头部参数里面加入x-kss-callbackauth 值为”1”时表示开启回调鉴权功能,具体详见第三部分“回调鉴权”。

请求接口

上传回调请求保持原有接口不变,参考Put Object,Complete Multipart Upload

请求参数

该接口不使用请求参数。

请求头部

名称 描述 必需
x-kss-callbackurl 支持http
x-kss-callbackbody 回调参数支持自定义参数返回、常量和魔法变量,自定义变量通过Head传回,例如objectKey=${key}&etag=${etag}&location=${kss-location} &uid=123
回调参数的value值不能包含“=”和“&”
x-kss-callbackauth 值为”1”时表示开启回调鉴权功能。回调鉴权功能具体详见第三部分“回调鉴权”
kss-location 自定义头以kss-开始 自定义

魔法变量

参数 说明 备注
bucket 文件上传的Bucket Utf-8编码
key 文件的名称 Utf-8编码
etag 文件Md5值经过base64处理
objectSize 文件大小 以字节标识
mimeType 文件类型
createTime 文件创建时间 Unix时间戳表示,1420629372,精确到秒

回调响应

响应内容

上传触发处理与原有Put Object,Complete Multipart Upload返回兼容。

特殊错误

POST Object

描述

采用POST回调时,需要在请求后面加入一个postcallback的参数,如POST /?postcallback HTTP/1.1,表示这是一个POST回调请求。当加入postcallback参数时,表单项中必须同时存在回调相关的参数,否则请求会判定不合法,具体与回调服务器交互过程与PUT回调一致。其它语法和普通POST请求一样,参考Post Object

请求接口

上传回调请求保持原有接口不变,参考Post Object

请求参数

参数 描述 必需
postcallback 表示这是一个POST回调请求

表单项

名称 描述 必需
x-kss-callbackurl 支持http
x-kss-callbackbody 回调参数支持自定义参数返回、常量和魔法变量,自定义变量通过Head传回,例如objectKey=${key}&etag=${etag}&location=${kss-location} &uid=123
回调参数的value值不能包含“=”和“&”
x-kss-callbackauth 值为”1”时表示开启回调鉴权功能。回调鉴权功能具体详见第三部分“回调鉴权”
kss-location 自定义头以kss-开始 自定义

魔法变量

参数 说明 备注
bucket 文件上传的Bucket Utf-8编码
key 文件的名称 Utf-8编码
etag 文件Md5值经过base64处理
objectSize 文件大小 以字节标识
mimeType 文件类型
createTime 文件创建时间 Unix时间戳表示,1420629372,精确到秒

回调响应

响应内容

上传触发处理与原有Post Object返回兼容。

特殊错误

调用POST回调方法时,如果未传入回调必填的表单项,请求将返回400;如果传入了回调相关的表单项,但是调用的是普通(非回调)POST方法时,请求也会返回400。

回调鉴权

如果回调时用户开启了鉴权字段x-kss-callbackauth(该字段在PUT和Complete Multipart Upload请求中写在header里,在POST请求中写在表单项里),则KS3向用户的回调地址返回的header中,就会包含Authorization和x-kss-date字段内容:

Authorization: ks3cbauth AKLTtxxxxx5IxxxpA7xxxxxx:FIexxyY3jGe07JxxxxxW5rBejKM=
  x-kss-date:1590132647609

其中ks3cbauth为固定值,AKLT开头到冒号前内容为用户此条POST请求使用的AK,冒号后面的部分是用此AK、对应SK和服务端指定时间(此处x-kss-date为回调发起时间即KS3服务器的时间)算出的签名串signature,算签名的方法和发送请求的v2签名计算方法类似,但简化一些:

signString = "ksscallback " + {timestamp} //形如"ksscallback 1590132647609",中间有个空格,ksscallback是个固定值  
  signature = Base64(HMAC-SHA1(YourSecretKey, UTF-8-Encoding-Of(signString)));  

金山云,开启您的云计算之旅

免费注册