微信小程序上传文件到阿里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 相关文章推荐
网页和浏览器兼容性问题汇总(draft1)
Jun 01 Javascript
关于JavaScript的面向对象和继承有利新手学习
Jan 11 Javascript
js导出table数据到excel即导出为EXCEL文档的方法
Oct 10 Javascript
javascript函数定义的几种区别小结
Jan 06 Javascript
js中document.write使用过程中的一点疑问解答
Mar 20 Javascript
jquery列表拖动排列(由项目提取相当好用)
Jun 17 Javascript
有关json_decode乱码及NULL的问题
Oct 13 Javascript
EasyUI Pagination 分页的两种做法小结
Jul 09 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
Mar 07 Javascript
React + webpack 环境配置的方法步骤
Sep 07 Javascript
Vue中的作用域CSS和CSS模块的区别
Oct 09 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
Dec 04 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中的生成XML文件的4种方法分享
2012/10/06 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
php探针不显示内存解决方法
2019/09/17 PHP
图片自动更新(说明)
2006/10/02 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
Web开发之JavaScript
2012/03/29 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
详解Vue CLI3配置解析之css.extract
2018/09/14 Javascript
Vue中的组件及路由使用实例代码详解
2019/05/22 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
Python浅复制中对象生存周期实例分析
2018/04/02 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
python实现与redis交互操作详解
2020/04/21 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
大学军训感言
2014/01/10 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
经营目标管理责任书
2014/07/25 职场文书
2015年少先队活动总结
2015/03/25 职场文书
2015年环境整治工作总结
2015/05/22 职场文书