upyun 云存储

通过网页 FORM,使用 HTTP/HTTPS 直接把文件上传到又拍云存储。特别地,文中请求参数放在 HTTP/HTTPS body 中传递,请确保您上传表单格式符合 RFC 1867 协议规范。

upyun的一些限制------

  • 每个上传请求只能上传一个文件,请求的参数名和参数值 区分大小写
  • 若在上传非图片文件时使用 image-width-rangeimage-height-range,会返回「不是图片」的错误。
  • 若请求中带有预处理参数(x-gmkerl-thumb),图片处理后再保存。
  • 若设置了 x-gmkerl-type 参数,则图片上传完成后会返回图片的 meta 信息或主题色。

前端直接上传upyun的话,需要几个必传的参数:

var options = {
   'bucket': 'allen-img.test.upcdn.net', -------------服务名
   'save-key': '/{year}/{mon}/{day}/{filemd5}{.suffix}',-------------路径(自设)
   'expiration': Math.floor(new Date().getTime() / 1000) + 86400---------有效期
};

// 查看更多参数:http://docs.upyun.com/api/form_api/#表单API接口简介
var policy = window.btoa(JSON.stringify(options));-----
console.log(policy)
// 从 UPYUN 用户管理后台获取表单 API
var form_api_secret = 'xxxxxxxxxxxxxxx';
// 计算签名
var signature = md5(policy + '&' + form_api_secret);

1.signature 算法

为了保证服务的安全性,使用服务的表单 API 密钥(可登录又拍云控制台查看)对 policy 进行签名,签名的结果即是 signature。

signature 生成步骤:

  1. 生成 policy 字符串(见 policy 算法);
  2. 将第 1 步中的字符串与表单 API 密钥字符串用 & 拼接;
  3. 将第 2 步中的字符串计算 md5,所得即为 signature

例如,假设服务的表单 API 验证密钥为:cAnyet74l9hdUag34h2dZu8z7gU=

第一步,生成 policy 字符串:

eyJidWNrZXQiOiJkZW1vYnVja2V0IiwiZXhwaXJhdGlvbiI6MTQwOTIwMDc1OCwic2F2ZS1rZXkiOiIvaW1nLmpwZyJ9

第二步,第一步的字符串与表单 API 密钥字符串用 & 拼接:

eyJidWNrZXQiOiJkZW1vYnVja2V0IiwiZXhwaXJhdGlvbiI6MTQwOTIwMDc1OCwic2F2ZS1rZXkiOiIvaW1nLmpwZyJ9&cAnyet74l9hdUag34h2dZu8z7gU=

第三步,将第二步的字符串计算 md5 后即得到 signature

646a6a629c344ce0e6a10cadd49756d4
2.Content-Secret 参数说明
文件设置 Content-Secret 后,文件将不能被直接访问,若需访问,需要在 URL 后加上 「间隔标识符」 和 「文件密钥」。
如: 间隔符为 !Content-Secret 为 abc,图片访问方式为: https://p.upyun.com/docs/cloud/secret.jpg!abc

3.请求成功后返回的参数是

参数 说明
code 状态码,200 表示上传成功
message URL encoding 的描述信息,ok 表示上传成功,其他的表示错误信息
url URL encoding 的文件保存路径
time UNIX UTC 时间戳,单位秒
sign/no-sign 签名,详见回调签名(旧)。使用回调签名(新)时,不存在
image-width 图片的宽。上传文件是图片时,才存在
image-height 图片的高。上传文件是图片时,才存在
image-type 图片类型。上传文件是图片时,才存在
image-frames 图片帧数。上传文件是图片时,才存在
task_ids 异步任务 ID 集。设置了 apps 参数时,才存在

具体详细的文档请移步这里-----------http://docs.upyun.com/api/form_api/


你可能感兴趣的:(upyun 云存储)