上传凭证

更新时间:2025-08-18 15:33:42

将上传凭证放置在请求表单中,参数名为:token

构建上传凭证的三个基本数据源如下:

  • 上传策略数据 (putPolicy)
    上传策略数据是在资源上传过程中提供的一组配置设置。通过这组配置信息,CDNetworks对象存储能够理解用户的上传需求:用户将上传哪些资源,上传到哪个存储空间,上传结果是回调通知还是使用重定向,反馈信息的内容是否需要设置,以及授权上传的有效期等。
  • 安全密钥 (SecretKey)
    请从对象存储平台的密钥管理员获取SK。
  • 访问密钥 (AccessKey)
    请从对象存储平台的密钥管理员获取AK。

上传凭证 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": "<contentDetect string>",
      "detectNotifyURL": "<detectNotifyURL string>",
      "detectNotifyRule": "<detectNotifyRule>",
      "separate": "<separate int>"
    }

格式说明

字段名 必需 描述
scope 指定上传的目标存储空间<bucket>和文件名<key>。有两种格式:
a. <bucket>表示文件上传到指定存储空间。
b. <bucket>:<key>表示文件上传到指定存储空间,并命名为key。当 overwrite 为 1 时,将覆盖同名资源(如果存在)。
deadline 上传请求授权的截止时间;UNIX时间戳;单位:毫秒。例如:1398916800000,表示时间为2014-05-01 12:00:00。
saveKey 自定义资源名,指定文件在对象存储中的最终存储路径。该字段仅支持普通上传方法。
fsizeLimit 限制上传文件的大小;单位:字节。上传大于限制的文件将失败,并返回401状态码。
注意:当此项设置为0时,没有限制
overwrite 指定是否覆盖服务器上已存在的文件:
0 - 不覆盖
1 - 覆盖。默认值为0。
returnUrl 当文件从网页端上传时,浏览器将执行由303重定向的URL。这通常用于HTML表单上传。如果文件成功上传,重定向指向<returnUrl>?upload_ret=urlsafe_base64_encode(returnBody)。如果文件上传失败,重定向指向<returnUrl>?code=<code>&message=<message>,其中<code>是错误码,<message>是错误的具体信息。如果未设置returnUrl,则直接将returnBody的内容返回给客户端。
returnBody 自定义上传成功后最终返回给上传端的数据。如果只需返回文件名和文件地址,可将returnBody设置为fname=$(fname)&url=$(url)。有关用法详情,请参阅返回数据说明
callbackUrl 上传成功后,对象存储使用POST方法请求地址。(要求:该地址必须是可以正常响应HTTP/1.1 200 OK的公网URL地址。如有空格等特殊字符需要进行Url Encode编码。)该地址的响应数据为JSON格式。
callbackBody 上传成功后,CDNetworks对象存储向callbackUrl提交数据,使用POST方法。callbackBody必须是合法的url查询字符串,例如:key=$(key)&fsize=$(fsize)。有关用法详情,请参见回调方法数据说明
persistentNotifyUrl 接收预处理结果通知的地址,必须是可以正常响应HTTP/1.1 200 OK的公网URL地址。如有空格等特殊字符需要进行Url Encode编码。有关通知内容的详细信息,请参见通知数据内容说明
persistentOps 文件上传成功后预处理的指令列表。每个指令为一个API规格字符字符串。使用分号;分隔多个指令。参见指令说明
contentDetect 在文件上传成功后进行内容识别操作。支持的参数:
imagePorn - 图像涉黄识别,imageTerror - 图像涉暴恐识别,imagePolitical - 图像涉政要识别。
detectNotifyURL 接收识别结果通知的地址,必须是可以正常响应HTTP/1.1 200 OK的公网URL地址。如有空格等特殊字符需要进行Url Encode编码。有关通知内容的详细信息,请参见识别通知数据内容说明
detectNotifyRule 设置识别结果通知规则。
all 所有图片通知
porn 涉黄图片通知
sexy 性感图片通知
normal 正常图片通知
exception 被识别为异常的图片通知
terror 涉暴恐图片通知(仅当识别类型为imageTerror时生效)
political 政要图片识别通知(仅当识别类型为imagePolitical时生效)
参数可以互相组合并以分号分隔
例如:当参数设置为porn;exception时,识别结果为涉黄图片或识别为异常的图片时将发送通知。
separate 是否有单独的转码通知。设置1和0作为选项代码:
1:表示每执行一个转码指令就通知persistentNotifyUrl。
0:表示在所有转码指令执行完毕后一次性通知persistentNotifyUrl。
默认值为0。

注意:

  1. 在设置persistentOps字段时,请完成persistentNotifyUrl字段的设置。平台将通过调用persistentNotifyUrl字段中设置的URL来通知您指令处理的结果。详情请参阅通知数据内容说明。
  2. 使用上传处理机制。设置persistentOps字段时,指令参数saveas是必需的,并且key可能与原始文件不同。否则,将返回401,并提示“The Persistent File Already Exists”。
  3. 文件命名优先级如下:Scope中的key > saveKey > 表单key > 原始文件名。

上传凭证生成算法

1. 构建上传策略
使用JSON格式封装上传文件的信息putPolicy

     {
      "scope": "<bucket string>",
      "deadline": "<deadline string>",
      "returnBody": "<returnBody string>",
      "overwrite": "<overwrite int>",
      "fsizeLimit": "<fsizeLimit long>",
      "returnUrl": "<returnUrl string>"
    }

2. 上传策略的URL安全Base64编码

putPolicy执行URL安全的Base64编码以获得encodePutPolicy

encodePutPolicy = urlsafe_base64_encode(putPolicy)

3. HMAC-SHA1 签名生成
使用SecretKeyencodePutPolicy提供HMAC-SHA1签名以获得Sign

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

4. 签名数据的URL安全Base64编码
为签名数据Sign进行URL安全的Base64编码以获得encodedSign

encodeSign = urlsafe_base64_encode(Sign)

5. 生成上传凭证
使用 : 连接AccessKey, encodedSignencodeputPolicy以获得上传凭证uploadToken

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