更新时间:2025-08-18 15:33:42
将上传凭证放置在请求表单中,参数名为: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": "<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。 |
注意:
- 在设置
persistentOps字段时,请完成persistentNotifyUrl字段的设置。平台将通过调用persistentNotifyUrl字段中设置的URL来通知您指令处理的结果。详情请参阅通知数据内容说明。- 使用上传处理机制。设置
persistentOps字段时,指令参数saveas是必需的,并且key可能与原始文件不同。否则,将返回401,并提示“The Persistent File Already Exists”。- 文件命名优先级如下: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 签名生成
使用SecretKey为encodePutPolicy提供HMAC-SHA1签名以获得Sign
Sign = hmac_sha1(encodePutPolicy, "<SecretKey>")
4. 签名数据的URL安全Base64编码
为签名数据Sign进行URL安全的Base64编码以获得encodedSign
encodeSign = urlsafe_base64_encode(Sign)
5. 生成上传凭证
使用 : 连接AccessKey, encodedSign和encodeputPolicy以获得上传凭证uploadToken
uploadToken = AccessKey:encodedSign:encodePutPolicy