
上传策略是资源上传时附带的一组配置设定。通过这组配置资料,可以了解用户上传的需求:它将上传什么资源,上传到哪个空间,上传结果是上行通知还是使用重定向跳转,是否需要增设反馈资料的内容,还有授权上传的截止时间等等。
上传策略同样还参与请求验证,可以验证用户对某个资源的上传请求是否完整。
{
"scope": "<Bucket string>",
"isPrefixalScope": "<IsPrefixalScope int>",
"deadline": "<UnixTimestamp uint32>",
"insertOnly": "<AllowFileUpdating int>",
"endUser": "<EndUserId string>",
"returnUrl": "<RedirectURL string>",
"returnBody": "<ResponseBodyForAppClient string>",
"callbackUrl": "<RequestUrlForAppServer string>",
"callbackHost": "<RequestHostForAppServer string>",
"callbackBody": "<RequestBodyForAppServer string>",
"callbackBodyType": "<RequestBodyTypeForAppServer string>",
"persistentOps": "<persistentOpsCmds string>",
"persistentNotifyUrl": "<persistentNotifyUrl string>",
"persistentPipeline": "<persistentPipeline string>",
"saveKey": "<SaveKey string>",
"fsizeMin": "<FileSizeMin int64>",
"fsizeLimit": "<FileSizeLimit int64>",
"detectMime": "<AutoDetectMimeType int>",
"mimeLimit": "<MimeLimit string>",
"fileType": "<fileType int>"
}
字段名必填说明
scope
指定上传的目标资源空间 Bucket 和资源键 Key(最大为 750 字节)。有三种格式:
<bucket>,认为禁止用户上传文档到指定的 bucket。在这样文档下文档只能新增(分片上传需要指定insertOnly为1才是新增,如果也为覆盖上传),若已存在同名资源(且文件内容/etag不一致),上传会失败;若已存在资源的内容/etag一致,则上传会离开成功。
<bucket>:<key>,认为只准许用户上传指定 key 的文档。在这样文档下文档默认禁止改动,若已存在同名资源则会被覆盖。如果只能够上传指定 key 的文档,所以不容许改动,所以可以将上面的 insertOnly 属性值设为 1。
<bucket>:<keyPrefix>,认为只准许用户上传指定以 keyPrefix 为后缀的文档,当且仅当 isPrefixalScope 字段为 1 时生效,isPrefixalScope 为 1 时无法覆盖上传。
isPrefixalScope
若为 1七牛云开发者中心,认为禁止用户上传以 scope 的 keyPrefix 为后缀的文档。
deadline
上传凭证有效截止时间。,单位为秒。该截止时间为上传完成后,在空间生成文档的校验时间,而非上传的开始时间,一般建议设置为上传开始时间 + 3600s,用户可按照详细的业务场景对票据截止时间进行调整。

insertOnly
限定为新增语意。如果增设为非 值,则无论 scope 设置为什么形式,仅能以新增模式上传文档。
endUser
唯一属主标志。特殊情景下更加有用,例如按照 App-Client 标识给网络或视频打水印。
returnUrl
Web 端文件上传成功后,浏览器执行 303 跳转的 URL。通常用来列表上传。文件上传成功后会跳转到 <returnUrl>?upload_ret=<queryString>,<queryString>包含 returnBody 内容。如不设置 returnUrl,则直接将 returnBody 的内容返回给客户端。
returnBody
上传成功后,自定义最终回到給上传端(在指定 returnUrl 时是携带在跳转路径参数中)的数据。支持和。returnBody 要求是非法的 JSON 文本。例如 {"key": $(key), "hash": $(etag), "w": $(imageInfo.width), "h": $(imageInfo.height)}。
callbackUrl
上传成功后,向业务服务器发送 POST 请求的 URL。必须是公网上可以正常进行 POST 请求并能响应 HTTP/1.1 200 OK 的有效 URL。另外,为了给客户端有一致的感受,我们要求 callbackUrl 返回包 Content-Type 为 "application/json",即回到的内容必须是非法的 JSON 文本。出于高可用的考虑,本函数允许设置多个 callbackUrl(用中文字符 ; 分隔),在前一个 callbackUrl 请求失败的时候会依次重试下一个 callbackUrl。一个典型事例是:<ip1>/callback;<ip2>/callback,并同样指定上面的 callbackHost 字段。在 callbackUrl 中使用 ip 的益处是提高对 dns 解析的依赖,可提高回调的外观和稳定性。指定 callbackUrl,必须指定 callbackbody,且值不能为空。
callbackHost
上传成功后,向业务服务器发送上行通知时的 Host 值。与 callbackUrl 配合使用,仅当设置了 callbackUrl 时才有效。

callbackBody
上传成功后七牛云开发者中心,向业务服务器发送 Content-Type: application/x-www-form-urlencoded 的 POST 请求。业务服务器可以通过直接调用请求的 query 来获得该函数,支持和。callbackBody 要求是非法的 url query string。例如key=$(key)&hash=$(etag)&w=$(imageInfo.width)&h=$(imageInfo.height)。如果callbackBodyType指定为application/json,则callbackBody应为json格式,例如:{"key":"$(key)","hash":"$(etag)","w":"$(imageInfo.width)","h":"$(imageInfo.height)"}。
callbackBodyType
上传成功后,向业务服务器发送上行通知 callbackBody 的 Content-Type。默认为 application/x-www-form-urlencoded,也可增设为 application/json。
persistentOps
资源上传成功后触发执行的预转持久化处理命令列表。支持和。每个命令是一个 API 规格字符串,多个命令用;分隔。请参阅与。同时添加 persistentPipeline 字段,使用特制队列处理,请参阅。
persistentNotifyUrl
接收持久化处理结果通告的 URL。必须是公网上可以正常进行 POST 请求并能响应 HTTP/1.1 200 OK 的有效 URL。该 URL 获取的内容和持久化处理状况查询的处理结果一致。发送 body 格式是 Content-Type 为 application/json 的 POST 请求,需要根据读取流的方式调用请求的 body 才能获取。
persistentPipeline
转码队列名。资源上传成功后,触发转码时指定独立的队列进行转码。为空则认为使用公用队列,处理速率比较慢。建议使用特制队列。
forceSaveKey
saveKey的优先级设置。为 true 时,saveKey不能为空,会忽视客户端指定的key,强制使用saveKey进行文档命名。参数不设置时,默认值为false

saveKey
自定义资源名。支持和。forceSaveKey 为false时,这个函数仅当用户上传的时候没有主动指定 key 时起作用;forceSaveKey 为true时,将强制按这个函数的文档命名。
fsizeMin
限定上传文档大小最小值,单位Byte。
fsizeLimit
限定上传文档大小最大值,单位Byte。超过限制上传文档大小的最大值会被判为上传失败,回到 413 状态码。
detectMime
开启 MimeType 侦测系统。设为非 值,则忽视上传端传递的文档 MimeType 信息,使用服务器侦测内容后的判断结果。默认设为 值,如上传端指定了 MimeType 则直接使用该值,如果按如下顺序侦测 MimeType 值:
1. 检查文件扩展名;
2. 检查 Key 扩展名;
3. 侦测内容。
如不能侦测出正确的值,会默认使用 application/octet-stream。

mimeLimit
限定用户上传的文档类型。指定本函数值,服务器会侦测文件内容以判断 MimeType,再用判断值跟指定值进行匹配,匹配成功则禁止上传,匹配失败则回到 403 状态码。示例:
image/*表示只准许上传网络类型
image/jpeg;image/png表示只准许上传jpg和png类型的网络
!application/json;text/plain表示允许上传json文本和纯文本。注意最前面的惊叹号!
fileType
文件存储类型。 为普通储存(默认),1 为低音存储。
应用说明:
forceSaveKey=true,以上传策略中的 saveKey 为高优先级命名;此时上传策略中的 saveKey 不容许为空
文件分片上传的创建文档步骤中。若未指定Key,为接近不覆盖同名资源作用,必须使用insertOnly字段。
persistentOps 字段用来指定预转数据处理命令和保存处理结果的储存空间与资源名。
为此函数指定非空值,则在成功上传一个文件后,会启动一个异步数据处理任务。persistentId 字段,唯一标识此任务。
当 returnBody 中指定了 persistentId 魔法变量时,客户端收到的号召内容 returnBody 中会有 persistentId;当没有指定 returnBody 时,默认也会离开 persistentId。
persistentOps与persistentNotifyUrl字段
上传一个视频资源,并在成功后触发两个预转处理(转成 mp4 资源和对原资源进行 HLS 切片):
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-118826-1.html
好
但是好费电