Skip to content

Latest commit

 

History

History
86 lines (59 loc) · 2.91 KB

putpolicy.md

File metadata and controls

86 lines (59 loc) · 2.91 KB

上传策略说明

US3 上传策略(PutPolicy)用于上传对象的同时,完成一些指定的操作,这些操作将会在上传动作完成后(部分动作是在开始上传前执行)触发并完成。

可以使用 PutPolicy 的 API 包括: PutFile、FinishMultipartUpload。

US3上传回调

上传策略可实现回调其他服务(callback),对上传的文件进行处理。

该策略指定在上传文件完成后(携带可能的参数)去请求一个用户指定的服务地址(目前仅支持 http,且仅支持请求一个指定服务)。在得到用户服务器的回应后(必须是 application/json 格式),将用户服务器的返回值透传给用户。回调服务的地址使用 json 格式进行封装,格式如下:

{
"callbackUrl" : "http://test.ucloud.cn",   //指定回调服务的地址
"callbackBody" : "key1=value1&key2=value2" //传递给回调服务的参数
}

携带上传策略的API请求,授权字段 Authorization 部分与不携带上传策略有所区别。

不携带上传策略,上传时的 Authorization 格式为:

Authorization: UCloud publickey:signature

使用上传策略,则格式为:

Authorization: UCloud publickey:signature:encodedPutPolicy

其中,encodedPutPolicy = base64(json_ encode(put_ policy)) (注意:json 格式请使用压缩后的格式,不要携带空白字符,除非 key/value 本身是含有空白字符的字符串。这里的 base64 是 URLSafe 的 base64)

此外,旧有方式的签名字符串计算方式是:

signstring = HTTP-Verb + "\n" +
     Content-MD5 + "\n" +
     Content-Type + "\n" +
     Date + "\n" +
     CanonicalizedUCloudHeaders +
     CanonicalizedResource

当上传请求需要执行上传策略时,签名字符串其他部分不变,需要在末尾追加上传策略的base64字符串,即:

signstring\_ with\_ putpolicy = signstring + base64(json_encode(put_policy))

用法示例

若上传的文件为:flower.jpg,上传策略为:

"callbackUrl" : "<http://inner.umedia.ucloud.com.cn/CreateUmediaTask>",
"callbackBody" :"url=<http://demo.ufile.ucloud.cn/flower.jpg&patten_name=mypolicy>"

没有上传策略的上传请求:

PUT /flower.jpg HTTP/1.1
Content-Length: 123456
Content-Type: image/jpeg
Host: test.ufile.ucloud.cn
Authorization: UCloud aGVsbHdvZGhhZGhhc2RoYWRzZGFkaHNkaGFkaGhkaGxrc2Rh:bTgzdWhkZGlsYS9kLmFkYWRhc2Ruaw==

携带上传策略的上传请求:

PUT /flower.jpg HTTP/1.1
Content-Length: 123456
Content-Type: image/jpeg
Host: test.ufile.ucloud.cn
Authorization: UCloud aGVsbHdvZGhhZGhhc2RoYWRzZGFkaHNkaGFkaGhkaGxrc2Rh:ZGFkLHBwMz0xZGthZGFkYXNkYQ==:XCJjYWxsYmFja1VybFwiOlwiIGh0dHA6Ly9pbm5lci51bWVkaWEudWNsb3VkLmNvbS5jbi9DcmVhdGVVbWVkaWFUYXNrXCIsXCJjYWxsYmFja0JvZHlcIjpcInVybD1odHRwOi8vZGVtby51ZmlsZS51Y2xvdWQuY24vdGVzdC5tcDQmIHBhdHRlbl9uYW1lPW15cG9saWN5XCI=

备注:签名与bucket相关,示例中签名仅作参考。