上传凭证请放入到请求的表单中,参数名:token
。
上传凭证构建的三个基础数据源:
上传策略数据putPolicy
上传策略数据是资源上传时附带的一组配置设定。通过这组配置信息,网宿云存储可以了解用户上传的需求:它将上传什么资源,上传到哪个空间,上传结果是回调通知还是使用重定向跳转,是否需要设置反馈信息的内容,以及授权上传的截止时间等等。
安全密钥SecretKey
请从云存储平台密钥管理处获取SK。
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> ,有两种格式:
a. <bucket> 表示上传文件到指定的bucket;
b. <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 |
注:
1、请在设置persistenOps
字段时,完成persistentNotifyUrl
字段设置,平台会通过调用persistentNotifyUrl
字段设置的URL,来通知您指令处理的结果,详见通知数据内容说明。
2、采用上传处理机制,设置persistenOps
字段时,指令参数saveas为必填,且文件名不能与原文件同名,否则返回401,提示信息"The Persistent File Already Exists"
3、文件命名优先级为:Scope的key > saveKey > 表单key >原文件名
使用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