微信小程序上传文件到阿里OSS教程


Posted in Javascript onMay 20, 2019

前言

(一)开通OSS服务与新建Bucket

微信小程序上传文件到阿里OSS教程

开通OSS服务这里省略,新建bucket。

(二)设置Bucket属性,后台配置域名

微信小程序上传文件到阿里OSS教程

上传文件访问域名

微信小程序上传文件到阿里OSS教程

这里我们要在小程序后台配置上传域名(上面的域名是我自己的申请的,后台配置的是公司的的域名,使用的时候你们用一套东西即可)。

微信小程序上传文件到阿里OSS教程

下图是bucket管理,这里可以新建文件的保存路径,域名管理。

微信小程序上传文件到阿里OSS教程

(三)服务端签名直传

点击查看文档

这里就不多做介绍了,这是上传文件到oss需要的参数,这些数据可以从后台获取。

{
 "accessid": "6MKO******4AUk44",
 "host": "http://post-test.oss-cn-hangzhou.aliyuncs.com",
 "policy": "eyJleHBpcmF0aW9uIjoiMjAxNS0xMS0wNVQyMDoyMzoyM1oiLCJjxb25kaXRpb25zIjpbWyJjcb250ZW50LWxlbmd0aC1yYW5nZSIsMCwxMDQ4NTc2MDAwXSxbInN0YXJ0cy13aXRoIiwiJGtleSIsInVzZXItZGlyXC8iXV19",
 "signature": "I2u5*******yff151E=",
 "expire": 1446726203,
 "dir": "user-dir/"
}
  • accessid:用户请求的accessid。
  • host:用户要往哪个域名发送上传请求。
  • policy:用户表单上传的策略(Policy),是经过base64编码过的字符串。
  • signature:对变量policy签名后的字符串。
  • expire:上传策略失效时间,在PolicyText里指定。在失效时间之前,都可以利用此Policy上传文件,所以没有必要每次上传都去服务端获取签名。

Policy的内容:

{"expiration":"2015-11-05T20:23:23Z",
"conditions":[["content-length-range",0,1048576000],
["starts-with","$key","user-dir/"]]

Policy说明:

Policy中增加了starts-with,用来指定此次上传的文件名必须以user-dir开头,用户可自行指定此字符串。增加starts-with的原因是:在很多场景下,一个应用对应一个Bucket,为了防止数字覆盖,每个用户上传到OSS的文件都可以有特定的前缀。这样就存在一个问题,用户获取到这个Policy后,在失效期内都能修改上传前缀,从而上传到别人的目录下。为了解决这个问题,可以设置应用服务器在上传时就指定用户上传的文件必须是某个前缀。这样如果用户获取到了Policy也没有办法上传到别人的前缀上,从而保证了数据的安全性。

(四)微信小程序上传

getCloudCdnParams: function(filePath, index) {
 var that = this;
 var dataUrl = app.globalData.laiSignBaseUrl + "open/getOSSClient"
 var params = new Object();
 params.type = app.globalData.imgesDir
 util.POST(
  dataUrl, {
  params,
  success: function(res) {
   if (res != null && res.data != null && res.data.success) {
   var result = res.data.result
   that.uploadFileFun(result, filePath, index)
   }
  },
  fail: function() {},
  })
 },

因为上传文件有时效性,所以在每次上传的时候都要重新获取上传的参数。

// 上传图片
 uploadFileFun: function(result, filePath, index) {
 var that = this;
 wx.uploadFile({
  url: app.globalData.uploadFileBaseUrl,
  filePath: filePath,
  /**上传的参数**/
  formData: {
  name: filePath,
  key: app.globalData.imgesDir + "demo-file" + result.expire + index,
  policy: result.policy,
  OSSAccessKeyId: result.accessid,
  success_action_status: "200",
  signature: result.signature,
  },
  success: function(res) {
   /**这边上传成功后要自己拼接文件的地址**/
   coverUrl: app.globalData.uploadFileBaseUrl + "/" + app.globalData.imgesDir + "demo-file" + result.expire + index
  },
  fail: function(res) {
  console.log(res)
  }
 })
 },

常见问题以及解决方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 插件开发 extjs中的extend用法小结
Jan 04 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
May 31 Javascript
高效率JavaScript编写技巧整理
Aug 23 Javascript
jQuery中children()方法用法实例
Jan 07 Javascript
layui select动态添加option的实例
Mar 07 Javascript
js监听html页面的上下滚动事件方法
Sep 11 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
Mar 28 Javascript
json字符串对象转换代码实例
Sep 28 Javascript
vue实现计算器功能
Feb 22 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
Jun 19 Javascript
vue 获取元素额外生成的data-v-xxx操作
Sep 09 Javascript
js基于canvas实现时钟组件
Feb 07 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
May 20 #Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
May 20 #Javascript
React如何实现浏览器打印部分内容详析
May 19 #Javascript
koa-router路由参数和前端路由的结合详解
May 19 #Javascript
Vue.js中该如何自己维护路由跳转记录
May 19 #Javascript
利用Vue实现一个markdown编辑器实例代码
May 19 #Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
May 18 #Javascript
You might like
php调用C代码的实现方法
2014/03/11 PHP
使用Discuz关键词服务器实现PHP中文分词
2014/03/11 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
基于jquery实现图片放大功能
2016/05/07 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
Python异常处理总结
2014/08/15 Python
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
在Python的框架中为MySQL实现restful接口的教程
2015/04/08 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
使用python实现kNN分类算法
2019/10/16 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
客户代表自我评价范例
2013/09/24 职场文书
应届毕业生的自我鉴定
2013/11/13 职场文书
工作的心得体会
2013/12/31 职场文书
大学校庆策划书
2014/01/31 职场文书
高中教师考核方案
2014/05/18 职场文书
幼儿发展评估方案
2014/06/11 职场文书
婚礼父母答谢词
2015/01/04 职场文书