微信小程序上传文件到阿里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 相关文章推荐
ExtJS4中使用mixins实现多继承示例
Dec 03 Javascript
jquery.validate.js插件使用经验记录
Jul 02 Javascript
jQuery中click事件的定义和用法
Dec 20 Javascript
jquery实现表单验证简单实例演示
Nov 23 Javascript
jQuery实现的图片轮播效果完整示例
Sep 12 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
Dec 14 Javascript
原生javascript实现读写CSS样式的方法详解
Feb 20 Javascript
详解vue.js全局组件和局部组件
Apr 10 Javascript
在React中如何优雅的处理事件响应详解
Jul 24 Javascript
vue.js中使用echarts实现数据动态刷新功能
Apr 16 Javascript
JS实现简单的表格增删
Jan 16 Javascript
JavaScript的垃圾回收机制与内存管理
Aug 06 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 $_ENV为空的原因分析
2009/06/01 PHP
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
javascript中如何处理引号编码"
2013/08/15 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
vue router 配置路由的方法
2018/07/26 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
[19:15]DK战队纪录片
2014/09/02 DOTA
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
Python3基础之基本数据类型概述
2014/08/13 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
PyQt5 实现给窗口设置背景图片的方法
2019/06/13 Python
django之对FileField字段的upload_to的设定方法
2019/07/28 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
Django密码存储策略分析
2020/01/09 Python
Python3 元组tuple入门基础
2020/02/09 Python
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
经济管理专业自荐信
2013/12/30 职场文书
企业员工薪酬方案
2014/06/04 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
2015年实习单位评语
2015/03/25 职场文书
文化苦旅读书笔记
2015/06/29 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python