微信小程序上传文件到阿里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 相关文章推荐
JXTree对象,读取外部xml文件数据,生成树的函数
Apr 02 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 Javascript
javascript中的window.location.search方法简介
Sep 02 Javascript
js 中的switch表达式使用示例
Jun 03 Javascript
javascript创建数组之联合数组的使用方法示例
Dec 26 Javascript
jquery根据锚点offset值实现动画切换
Sep 11 Javascript
易被忽视的js事件问题总结
May 14 Javascript
JQuery点击事件回到页面顶部效果的实现代码
May 24 Javascript
用Vue.extend构建消息提示组件的方法实例
Aug 08 Javascript
inquirer.js一个用户与命令行交互的工具详解
May 18 Javascript
在Vue mounted方法中使用data变量详解
Nov 05 Javascript
vue+ts下对axios的封装实现
Feb 18 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四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
php实现对文件压缩简单的方法
2019/09/29 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
JQuery 学习技巧总结
2010/05/21 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
2019/04/17 Javascript
解决vue单页面应用中动态修改title问题
2019/06/09 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
python爬虫爬取淘宝商品信息
2018/02/23 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
python实现决策树分类(2)
2018/08/30 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
Python3爬虫关于识别检验滑动验证码的实例
2020/07/30 Python
套娃式文件夹如何通过Python批量处理
2020/08/23 Python
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
final, finally, finalize的区别
2012/03/01 面试题
文明村创建实施方案
2014/03/27 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
销售经理工作检讨书
2015/02/19 职场文书
离婚起诉书范本
2015/05/18 职场文书