微信小程序上传文件到阿里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 相关文章推荐
Javascript的IE和Firefox兼容性汇编
Jul 01 Javascript
基于JQuery框架的AJAX实例代码
Nov 03 Javascript
javascript encodeURI和encodeURIComponent的比较
Apr 03 Javascript
js/html光标定位的实现代码
Sep 23 Javascript
JS弹出对话框实现方法(三种方式)
Dec 18 Javascript
Kindeditor在线文本编辑器如何过滤HTML
Apr 14 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
Aug 03 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
May 24 Javascript
详解基于mpvue的小程序markdown适配解决方案
May 08 Javascript
微信小程序数据统计和错误统计的实现方法
Jun 26 Javascript
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
原生JS实现分页
Apr 19 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
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
JavaScript window.location对象
2014/11/14 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
Vue+axios 实现http拦截及路由拦截实例
2017/04/25 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
python读取浮点数和读取文本文件示例
2014/05/06 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
给我一面国旗 python帮你实现
2019/09/30 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
杠杆的科学教学反思
2014/01/10 职场文书
四年级下册教学反思
2014/02/01 职场文书
会计自我鉴定
2014/02/04 职场文书
中学生个人自我评价
2014/02/06 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
联欢晚会主持词
2014/03/25 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
学校纪律作风整改措施思想汇报
2014/10/11 职场文书
创业计划书之干洗店
2019/09/10 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python