php七牛fetch上传图片,使用七牛云存储图片 之 上传图片

构造上传策略:

上传策略是资源上传时附带的一组配置设定。通过这组配置信息,七牛云存储可以了解用户上传的需求:它将上传什么资源,上传到哪个空间,上传结果是回调通知还是使用重定向跳转,是否需要设置反馈信息的内容,以及授权上传的截止时间等等。

{

"scope": "",

"deadline": ,

"insertOnly": ,

"endUser": "",

"returnUrl": "",

"returnBody": "",

"callbackUrl": "",

"callbackHost": "",

"callbackBody": "",

"callbackBodyType": "",

"callbackFetchKey":

"persistentOps": "",

"persistentNotifyUrl": "",

"persistentPipeline": "",

"saveKey": "",

"fsizeMin": ,

"fsizeLimit": ,

"detectMime": ,

"mimeLimit": ""

"deleteAfterDays": ""

}

字段名称必填说明

scope是指定上传的目标资源空间 Bucket 和资源键 Key(key的长度最大为750字节)。有两种格式: ● ``,表示允许用户上传文件到指定的 bucket。在这种格式下文件只能新增,若已存在同名资源上传则会失败。 ● ``:``,表示只允许用户上传指定 key 的文件。在这种格式下文件默认允许修改,若已存在同名资源则会被覆盖。如果只希望上传指定 key 的文件,并且不允许修改,那么可以将下面的 `insertOnly` 属性值设为 1

deadline是上传凭证有效截止时间。`Unix时间戳`,单位为秒。该截止时间为上传完成后,在七牛空间生成文件的校验时间,而非上传的开始时间,一般建议设置为上传开始时间 + 3600s,用户可根据具体的业务场景对凭证截止时间进行调整。

insertOnly限定为新增语意。如果设置为非 0 值,则无论 `scope` 设置为什么形式,仅能以新增模式上传文件。

endUser唯一属主标识。特殊场景下非常有用,例如根据 App-Client 标识给图片或视频打水印。

returnUrlWeb 端文件上传成功后,浏览器执行 303 跳转的 URL。通常用于 HTML Form 上传。文件上传成功后会跳转到 `?upload_ret=`,``包含 `returnBody` 内容。如不设置 returnUrl,则直接将 returnBody 的内容返回给客户端。

returnBody上传成功后,自定义七牛云最终返回給上传端(在指定 returnUrl 时是携带在跳转路径参数中)的数据。支持魔法变量和自定义变量。returnBody 要求是合法的 JSON 文本。例如 `{"key": $(key), "hash": $(etag), "w": $(imageInfo.width), "h": $(imageInfo.height)}`。

callbackUrl上传成功后,七牛云向 App-Server 发送 POST 请求的 URL。必须是公网上可以正常进行 POST 请求并能响应 HTTP/1.1 200 OK 的有效 URL。另外,为了给客户端有一致的体验,我们要求 callbackUrl 返回包 Content-Type 为 "application/json",即返回的内容必须是合法的 JSON 文本。出于高可用的考虑,本字段允许设置多个 callbackUrl(用英文符号 ; 分隔),在前一个 callbackUrl 请求失败的时候会依次重试下一个 callbackUrl。一个典型例子是 `http:///callback;http:///callback`,并同时指定下面的 callbackHost 字段。在 callbackUrl 中使用 ip 的好处是减少了对 dns 解析的依赖,可改善回调的性能和稳定性。

callbackHost上传成功后,七牛云向"App-Server"发送回调通知时的 Host 值。 与callbackUrl配合使用,仅当设置了 callbackUrl 时才有效。"callbackHost":"a.example.com",host域名不加http://

callbackBody上传成功后,七牛云向"App-Server"发送Content-Type: application/x-www-form-urlencoded 的POST请求。 该字段"App-Server"可以通过直接读取请求的query来获得,支持魔法变量和自定义变量。callbackBody 要求是合法的 url query string。如:`key=$(key)&hash=$(etag)&w=$(imageInfo.width)&h=$(imageInfo.height)`。

callbackBodyType上传成功后,七牛云向"App-Server"发送回调通知`callbackBody`的`Content-Type`。 默认为`application/x-www-form-urlencoded`,也可设置为`application/json`。

callbackFetchKey是否启用fetchKey上传模式。 0为关闭,1为启用。具体见callbackFetchKey详解。

persistentOps资源上传成功后触发执行的预转持久化处理指令列表。 每个指令是一个API规格字符串,多个指令用;分隔。 请参阅persistenOps详解与示例。同时添加persistentPipeline字段,使用专用队列处理,请参阅persistentPipeline。

persistentNotifyUrl接收持久化处理结果通知的URL。 必须是公网上可以正常进行POST请求并能响应"HTTP/1.1 200 OK"的有效URL。 该URL获取的内容和持久化处理状态查询(prefop)的处理结果一致。 发送body格式是`Content-Type`为`application/json`的POST请求,需要按照读取流的形式读取请求的body才能获取。

persistentPipeline转码队列名。 资源上传成功后,触发转码时指定独立的队列进行转码。为空则表示使用公用队列,处理速度比较慢。建议使用专用队列。

saveKey自定义资源名。 支持魔法变量及自定义变量。这个字段仅当用户上传的时候没有主动指定key的时候起作用。

fsizeMin限定上传文件大小最小值,单位:字节(Byte)。设置为k,即k及k以上的文件可以上传。

fsizeLimit限定上传文件大小最大值,单位:字节(Byte)。 超过限制上传文件大小的最大值会被判为上传失败,返回413状态码。

detectMime开启MimeType侦测功能。 设为非0值,则忽略上传端传递的文件MimeType信息,使用七牛服务器侦测内容后的判断结果。 默认设为0值,如上传端指定了MimeType则直接使用该值,否则按如下顺序侦测MimeType值: 1. 检查文件扩展名; 2. 检查Key扩展名; 3. 侦测内容。 如不能侦测出正确的值,会默认使用 `application/octet-stream` 。

mimeLimit限定用户上传的文件类型。 指定本字段值,七牛服务器会侦测文件内容以判断MimeType,再用判断值跟指定值进行匹配,匹配成功则允许上传,匹配失败则返回403状态码。 示例: ● `image/*`表示只允许上传图片类型 ● `image/jpeg;image/png`表示只允许上传jpg和png类型的图片 ● `!application/json;text/plain`表示禁止上传json文本和纯文本。注意最前面的感叹号!

deleteAfterDays文件在多少天后被删除,七牛将文件上传时间与指定的`deleteAfterDays`天数相加,得到的时间入到后一天的午夜(CST,中国标准时间),从而得到文件删除开始时间。例如文件在2015年1月1日上午10:00 CST上传,指定`deleteAfterDays`为3天,那么会在2015年1月5日00:00 CST之后当天内删除文件。

如现有如下上传策略:

$putPolicy = array(

'scope' => QINIU_BUCKET.':'.$filename ,

'deadline' => time()+3600 ,

'returnBody' => '{

"name": $(fname),

"file_url": $(x:file_url)

}'

);

该上传策略定义了:

1. 指定了图片上传至QINIU_BUCKET存储空间中,同时,该token只允许文件名为 $filename 的文件上传。

2. token有效时间为1个小时。

3. 设置返回信息,返回上传的文件的文件名,和自定义参数中的 file_url

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值