上传凭证

更新时间:2020-10-09 13:48:59

描述

上传凭证请放入到请求的表单中,参数名:token 。

上传凭证构建的三个基础数据源:

  • 上传策略数据 putPolicy
    上传策略数据是资源上传时附带的一组配置设定。通过这组配置信息,网宿云存储可以了解用户上传的需求:它将上传什么资源,上传到哪个空间,上传结果是回调通知还是使用重定向跳转,是否需要设置反馈信息的内容,以及授权上传的截止时间等等。
  • 安全密钥 SecretKey
    请从云存储平台密钥管理处获取SK。
  • 访问密钥 AccessKey
    请从云存储平台密钥管理处获取AK。
    上传凭证uploadToken是基于三个基础数据源上复杂签名计算的结果。通过对上传凭证验证,可以确保非法上传请求被阻止,防止入侵行为。

上传凭证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 指定上传的目标空间和文件名,有两种格式:1.表示上传文件到指定的bucket。2.:上传文件到指定的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上传。如果文件上传成功,则重定向到?upload_ret=urlsafe_base64_encode(returnBody)。如果文件上传失败,则重定向到?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>"
}

url安全的base64编码上传策略

对putPolicy进行URL安全的Base64编码,得到encodePutPolicy。

encodePutPolicy = urlsafe_base64_encode(putPolicy)

hmac-sha1签名数据

使用SecretKey对encodePutPolicy进行HMAC-SHA1签名,得到Sign。

Sign = hmac_sha1(encodePutPolicy, "<SecretKey>")

注:不同语言的HMAC-SHA1方法有差异,可参考各语言SDK中的实现

外部资源:HMAC-SHA1签名
示例代码:HMAC-SHA1签名

url安全的base64编码签名数据

对签名数据Sign进行URL安全的Base64编码,得到encodedSign。

encodeSign = urlsafe_base64_encode(Sign)

生成上传凭证

将AccessKey、encodedSign和encodeputPolicy用:连接起来,得到上传凭证uploadToken。

uploadToken = AccessKey:encodedSign:encodePutPolicy
本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!