更新时间:2023-08-17 17:36:32
上传凭证不仅用于识别请求者的身份是否合法,也用于定义上传操作方式,凭证请放入到请求表单的token
参数中 。
上传凭证构建的三个基础数据源:
putPolicy
SecretKey
AccessKey
上传凭证uploadToken
是基于三个基础数据源上复杂签名计算的结果。通过对上传凭证验证,可以确保非法上传请求被阻止,防止入侵行为。
数据格式
{
"scope": "<bucket string>",
"deadline": "<deadline string>",
"saveKey": "<saveKey string>"
"returnUrl": "<returnUrl string>",
"returnBody": "<returnBody string>",
"overwrite": "<overwrite int>",
"fsizeLimit": "<fsizeLimit long>",
"callbackUrl": "<callbackUrl string>",
"callbackBody": "<callbackBody string>",
"persistentOps": "<persistentOps string>",
"persistentNotifyUrl": "<persistentNotifyUrl string>"
"contentDetect": "<contentDetctstring>"
"detectNotifyURL": "<detectNotifyURL string>"
"detectNotifyRule":"<detectNotifyRule>"
"separate": "<separate int>"
}
格式说明
字段名 | 必填 | 描述 |
---|---|---|
scope | 是 | 指定上传的目标空间<bucket> 和文件名<key> ,有两种格式:1. <bucket> 表示上传文件到指定的bucket。2. <bucket>:<key> 上传文件到指定的bucket,文件命名为key。当overwrite为1时,已存在同名资源则会被覆盖。 |
deadline | 是 | 上传请求授权的截止时间;UNIX时间戳,单位:毫秒。范例:1398916800000,代表时间2014-05-01 12:00:00。 |
saveKey | 否 | 自定义资源名。该字段仅支持普通上传方式。 |
fsizeLimit | 否 | 限定上传文件的大小,单位:字节(Byte)。超过限制大小的文件上传失败,返回401状态码。 注:设置为0时,无限制。 |
overwrite | 否 | 指定是否覆盖服务器上已经存在的文件:0-不覆盖,1-覆盖。默认为0 。 |
returnUrl | 否 | Web端文件上传后,浏览器会执行303跳转的URL,通常用于HTML Form上传。如果文件上传成功,则重定向到<returnUrl>?upload_ret=urlsafe_base64_encode(returnBody) 。如果文件上传失败,则重定向到<returnUrl>?code=<code>&message=<message> ,其中<code> 是错误码,<message> 是错误具体信息。如果不设置returnUrl ,则直接将returnBody 的内容返回给客户端。 |
returnBody | 否 | 上传成功后,自定义最终返回給上传端的数据。如果您只需要返回文件名和文件地址,只需将returnBody 设置成fname=$(fname)&url=$(url) 即可。详细用法参见返回数据说明。 |
callbackUrl | 否 | 上传成功后,云存储以POST方式请求该地址。(要求:必须是公网URL地址,能正常响应HTTP/1.1 200 OK,若有空格等特殊字符,需要进行Url Encode编码)该地址响应数据格式为JSON文本。 |
callbackBody | 否 | 上传成功后,网宿云POST方式提交到callbackUrl 的数据。callbackBody 要求是合法的url query string ,如:key=$(key)&fsize=$(fsize) 。详细用法参见返回数据说明。 |
persistentNotifyUrl | 否 | 接收预处理结果通知的地址,要求必须是公网URL地址,能正常响应HTTP/1.1 200 OK,若有空格等特殊字符,需要进行Url Encode编码。通知内容参见通知数据内容说明。 |
persistentOps | 否 | 文件上传成功后,预处理指令列表。每个指令是一个API规格字符串,多个指令用; 分隔。请参见返回数据说明。 |
contentDetect | 否 | 文件上传成功后,进行内容鉴定操作。支持参数: imagePorn-图片鉴黄, imageTerror-图片鉴恐, imagePolitical-政治人物识别。 |
detectNotifyURL | 否 | 接收鉴定结果的通知地址,要求必须是公网URL地址,能正常响应HTTP/1.1 200 OK,若有空格等特殊字符,需要进行Url Encode编码。通知内容参见鉴定通知数据内容说明。 |
detectNotifyRule | 否 | 鉴定结果通知规则设置。 all 全部通知 porn 通知色情图片 sexy 通知性感图片 normal 通知正常图片 exception 通知鉴定异常的图片 terror 通知暴恐图片*(鉴定类型为imageTerror时才生效*) political 通知识别为政治人物的图片(鉴定类型为imagePolitical时才生效) 参数支持相互组合,以分号间隔。 例如:参数设置为porn;exception即通知鉴定结果为色情或者鉴定异常的图片。 |
separate | 否 | 转码是否分开通知。设置1和0作为选项码: 1:表示每个转码指令执行完后都通知persistentNotifyUrl。 0:表示所有转码指令执行完后再一次性通知persistentNotifyUrl。 默认值为0。 |
注:
persistenOps
字段时,完成persistentNotifyUrl
字段设置,平台会通过调用persistentNotifyUrl
字段设置的URL,来通知您指令处理的结果,详见通知数据内容说明。persistenOps
字段时,指令参数saveas为必填,且文件名不能与原文件同名,否则返回401,提示信息“The Persistent File Already Exists”。使用json格式封装上传文件的一些信息**putPolicy
**。
{
"scope": "<bucket string>",
"deadline": "<deadline string>",
"returnBody": "<returnBody string>",
"overwrite": "<overwrite int>",
"fsizeLimit": "<fsizeLimit long>",
"returnUrl": "<returnUrl string>"
}
对 putPolicy
进行URL安全的Base64编码,得到encodePutPolicy
。
encodePutPolicy = urlsafe_base64_encode(putPolicy)
使用 SecretKey
对encodePutPolicy
进行HMAC-SHA1
签名,得到**Sign
**。
Sign = hmac_sha1(encodePutPolicy, "<SecretKey>")
注:不同语言的HMAC-SHA1方法有差异,可参考各语言SDK中的实现
外部资源:HMAC-SHA1签名
示例代码:HMAC-SHA1签名
对签名数据 Sign
进行URL安全的Base64编码,得到encodedSign
。
encodeSign = urlsafe_base64_encode(Sign)
将 AccessKey
、encodedSign
和encodeputPolicy
用:
连接起来,得到上传凭证uploadToken
。
uploadToken = AccessKey:encodedSign:encodePutPolicy