Skip to content

Instantly share code, notes, and snippets.

@ikbear
Created February 10, 2014 08:58
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ikbear/8912579 to your computer and use it in GitHub Desktop.
Save ikbear/8912579 to your computer and use it in GitHub Desktop.
UpToken

uptoken

uptoken 是由PutPolicy经过编码加密得到的,语义如下

PutPolicy

字段 类型 语义
scope string 指定为bucket:key这样的形式,bucket必须
deadline int token失效的unix时间戳(单位:秒),必须
insertOnly int 非0的情况下,即使scope中指定了key也是insert only,无法修改文件
callbackUrl string 上传完毕后七牛云存储向 App-Server 发送POST请求的URL
callbackBody string 上传完毕后,七牛云存储向 App-Server 发送POST请求的数据,支持魔法变量和自定义变量
endUser string 给上传的文件添加唯一属主标识
returnBody string 自定义从七牛云存储最终返回給终端 App-Client 的数据,支持魔法变量和自定义变量
returnUrl string 文件上传完毕后,浏览器执行303跳转的url
saveKey string 利用文件的属性,日期等参数组成特定的key
transform string 对文件先进行一次变换操作(比如将音频统一转为某种码率的mp3)再进行存储。transform的值就是一个fop指令,比如imageView/1/w/310/h/395/q/80,其含义是对上传的文件执行这个fop指令,然后把结果保存到七牛。
fopTimeout int 文件变换操作执行的超时时间(单位:秒),这个值太小可能会导致误判(最终存储成功了但客户端得到超时错),但太大可能会导致服务端将其判断为低优先级任务。建议取一个相对准确的时间估计值*N(N不要超过5)
persistentOps string 对文件执行持久化fop的操作,用;分隔
persistentNotifyUrl string 当持久化fop操作执行成功以后,服务器通知的url
detectMime int 是否检测文件类型,1为根据内容检测,0为根据后缀或者用户指定
mimeLimit string 限制了上传文件的MimeType,支持尾部 * 通配符以及多条记录(如image/*;video/*),支持头部 ! 表示不允许的MimeType(如!image/*;video/*
fsizeLimit int64 限制上传文件大小

persistentOps 详解

当指定了此参数,用户上传一个文件后,会启动一个异步数据处理任务,客户端会收到 persistentId 字段唯一标示此任务。 persistentOps 字段可以描述数据处理命令和结果保存的路径。

  1. 默认持久化路径。当只指定了数据处理命令时,服务端会选择上传文件的 bucket 作为数据处理结果的 bucket,key 为服务端自动生成。
  2. 自定义持久化路径。当在数据处理命令后用管道连接 saveas/<encodedEntryURI> 时,服务端会用 saveas 命令指定的 entryURI 作为持久化的路径,比如 avthumb/flv|saveas/cWJ1Y2tldDpxa2V5,是将上传的视频文件转码成 flv 格式后存储为 qbucket:qkey,cWJ1Y2tldDpxa2V5 是 qbucket:qkey 的 base64 urlsafe 编码。

以上描述可以同时作用于多个数据处理命令,用 ; 分隔,比如 avthumb/mp4|saveas/cWJ1Y2tldDpxa2V5;avthumb/flv|saveas/cWJ1Y2tldDpxa2V5Mg==

PutPolicy过时字段

字段 类型 语义
asyncOps string 对文件进行上传预转的fop,用;分隔
customer string 类似endUser字段
escape int 是否允许存在转义符号,现在默认允许
exclusive int 类似insertOnly
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment