博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
upload To upyun
阅读量:4685 次
发布时间:2019-06-09

本文共 2191 字,大约阅读时间需要 7 分钟。

upyun请求路径:

http://v0.api.upyun.com/ + 存储空间名 + file=@ + 文件名 + policy=
+ signature=
文件保存的路径由save-key参数决定,它有5种类型。 示例:

  所以,如果要求保存的图片路径为:/upload/年月日/time.类型 则save-key需要设置为:/upload/ + me.createTime() + / + tp + ext(从左到右依次为相对路径、获取当前时间的函数、格林尼治时间(毫秒)、文件类型); 这样一来,在我们的存储空间bucket中,文件以/upload/...的形式存储下来。 存储之后的访问路径为:http://存储空间.b0.upaiyun.com/文件路径

2016-08-25 14:23:06   目标:借助plupload将图片上传到又拍云   首先需要了解又拍的 HTTP FORM API upyun上的配置   其中有policy、signature两个参数需要注意。   policy:表示上传请求相关的参数,例如保存路径,文件类型,预处理结果等值。   signature:用于安全校验。   以上两个参数处于安全考虑需要在服务器端完成,不过在前端用js也是可以的(安全性差一些)。   配置方式如下:
//参考代码var options = {    'bucket': 'demonstration',//保存所上传的文件的又拍云空间名    'save-key': '/test/filename.txt',//保存路径    'expiration': Math.floor(new Date().getTime() / 1000) + 86400//请求的过期时间}; //以上三个属性为必选项 //其他可选属性参见upyun官方文档 //
  然后是policy的算法,这里使用官方提供的policy算法。分两步
  1. 将参数转换为json字符串:例如:{"bucket":"demobucket","expiration":1409200758,"save-key":"/img.jpg"}。
  2. 将第一步得到的字符串进行base64编码,得到的结果就是我们需要的policy了。

接下来是signature的算法,参考来源同样是官方。计算它需要用到三个参数,分别是policy字符串、表单验证密钥(form_api_secret)。总体分三步:

  1. 生成policy字符串。
  2. 将policy字符串与表单验证密钥通过&符拼接。
  3. 将第二步得到的字符串计算md5,得到的结果就是signature。

  补充知识:

  对字符串进行base64编码的方式:

  window.btoa(...);

  描述:将ascii字符串或二进制数据转换成一个base64编码过的字符串,该方法不能直接作用于Unicode字符串。

  对base64编码过的字符串进行解码的方式:

  window.atob(...);

  描述:对接受到的base64数据进行解码,得到原数据。

至此,upyun部分的配置就结束了。我们还需要配置plupload部分的参数。

plupload配置

  plupload的配置示例如下

var uploader = new plupload.Uploader({    ...    url : 'http://v0.api.upyun.com/' + options.bucket, //上传地址,其中‘http://v0.api.upyun.com/’为又拍云FORMAPI的基本域名,bucket为upyun空间名    multipart_params: {        'Filename': '${filename}', // 与runtime保持一致        'Content-Type': '',        'policy': policy,        'signature': signature,    },    ...});

 

  plupload的配置参数中的runtime属性可以指定该插件使用哪种方法上传,它的值有[“flash”,"sliverlight","html4","html5"]等多种。在程序执行时,会根据浏览器版本使用相应的方式。

 相关兼容问题与bug

  1.IE8下如何通过js获取文件真实路径,以达到预览图片的目的?

    问题描述:IE8上传文件时,获取<input id="file" type="file" />元素选择的文件路径,在控制台输出document.getElementById("file").value()的值,程序运行时,会发现控制台输出的是“"C:\fakepath\xxxxx”,而不是文件真实的路径。

  2.input file change事件响应value值的改变,在第一次有效,提交表单之后再次点击则无效,不响应节点value值的变化。

    问题描述:同上。

转载于:https://www.cnblogs.com/foxNike/p/5777504.html

你可能感兴趣的文章
端口扫描base
查看>>
iOS IM开发的一些开源、框架和教程等资料
查看>>
FansUnion:共同写博客计划终究还是“流产”了
查看>>
python 二维字典
查看>>
编译原理实验一
查看>>
Git for Android Studio 学习笔记
查看>>
pip 警告!The default format will switch to columns in the future
查看>>
Arrays类学习笔记
查看>>
实验吧之【天下武功唯快不破】
查看>>
2019-3-25多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量)...
查看>>
win7-64 mysql的安装
查看>>
dcm4chee 修改默认(0002,0013) ImplementationVersionName
查看>>
maven3在eclipse3.4.2中创建java web项目
查看>>
发布时间 sql语句
查看>>
黑马程序员 ExecuteReader执行查询
查看>>
记一些从数学和程序设计中体会到的思想
查看>>
题目1462:两船载物问题
查看>>
POJ 2378 Tree Cutting(树形DP,水)
查看>>
第二冲刺阶段个人博客5
查看>>
UVA 116 Unidirectional TSP (白书dp)
查看>>