微信小程序上传文件到阿里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 相关文章推荐
Prototype使用指南之selector.js说明
Oct 26 Javascript
利用JavaScript实现新闻滚动效果(实例代码)
Nov 27 Javascript
JavaScript中字符串分割函数split用法实例
Apr 07 Javascript
jQuery中使用each处理json数据
Apr 23 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
Sep 12 Javascript
简单谈谈Javascript函数中的arguments
Feb 09 Javascript
jQuery实现获取h1-h6标题元素值的方法
Mar 06 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
Oct 26 Javascript
详解Immutable及 React 中实践
Mar 01 Javascript
简述Vue中容易被忽视的知识点
Dec 09 Javascript
JavaScript位置参数实现原理及过程解析
Sep 14 Javascript
比较node.js和Deno
Apr 27 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+DBM的同学录程序(2)
2006/10/09 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
类之Prototype.js学习
2007/06/13 Javascript
jquery select选中的一个小问题
2009/10/11 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
jQuery事件对象总结
2016/10/17 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
2020/05/26 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
Python创建日历实例
2014/08/21 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
详解android与HTML混合开发总结
2018/06/06 HTML / CSS
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
小车司机岗位职责
2013/11/25 职场文书
运动会通讯稿150字
2014/02/15 职场文书
最经典的商业地产项目广告词
2014/03/13 职场文书
同学会主持词
2014/03/18 职场文书
兴趣小组活动总结
2014/05/05 职场文书
保护环境建议书300字
2014/05/13 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
上班旷工检讨书
2015/08/15 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
如何Tomcat中使用ipv6地址
2022/05/06 Servers
css样式important规则的正确使用方式
2022/06/10 HTML / CSS