微信小程序上传文件到阿里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 相关文章推荐
js不是基础的基础
Dec 24 Javascript
用tip解决Ext列宽度不够的问题
Dec 13 Javascript
自己动手开发jQuery插件教程
Aug 25 Javascript
jquery中通过父级查找进行定位示例
Jun 28 Javascript
javascript操作数组详解
Dec 17 Javascript
CSS或者JS实现鼠标悬停显示另一元素
Jan 22 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 Javascript
Javascript for in的缺陷总结
Feb 03 Javascript
jQuery判断邮箱格式对错实例代码讲解
Apr 12 jQuery
seajs下require书写约定实例分析
May 16 Javascript
防止Layui form表单重复提交的实现方法
Sep 10 Javascript
JavaScript实现HTML导航栏下拉菜单
Nov 25 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
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php截取中文字符串函数实例
2015/02/23 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
javascript与webservice的通信实现代码
2010/12/25 Javascript
javaScript(JS)替换节点实现思路介绍
2013/04/17 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
js实现动态显示时间效果
2017/03/06 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
Python对文件操作知识汇总
2016/05/15 Python
使用python实现生成用户信息
2017/03/20 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
python实现AdaBoost算法的示例
2020/10/03 Python
考博自荐信
2013/10/25 职场文书
人事任命书范文
2014/06/04 职场文书
个人授权委托书格式
2014/08/30 职场文书
房产授权委托书范本
2014/09/22 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
开学第一天的感想
2015/08/10 职场文书
信息技术课教学反思
2016/02/23 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python