微信小程序上传文件到阿里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解决常见浏览器兼容问题的12种方法
Jan 04 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
May 10 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
Sep 16 Javascript
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
Sep 23 Javascript
在JavaScript中构建ArrayList示例代码
Sep 17 Javascript
Three.js学习之几何形状
Aug 01 Javascript
Bootstrap基本组件学习笔记之面板(14)
Dec 08 Javascript
详解webpack进阶之loader篇
Aug 23 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
May 01 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
Oct 26 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
Jun 01 Javascript
微信小程序订阅消息(java后端实现)开发
Jun 01 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
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
php操作mysql数据库的基本类代码
2014/02/25 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
2015/03/20 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
javascript实现显示和隐藏div方法汇总
2015/08/14 Javascript
详解Document.Cookie
2015/12/25 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
python获取外网ip地址的方法总结
2015/07/02 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
Opencv求取连通区域重心实例
2020/06/04 Python
Python如何对XML 解析
2020/06/28 Python
用python实现学生管理系统
2020/07/24 Python
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
关于母亲节的感言
2014/02/04 职场文书
大学生标准自荐书
2014/06/15 职场文书
80后婚前协议书范本
2014/10/24 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
刑事上诉状范文
2015/05/22 职场文书
摘录式读书笔记
2015/07/01 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android