微信小程序上传文件到阿里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实现在小方框中浏览大图的代码
Aug 14 Javascript
学习ExtJS Window常用方法
Oct 07 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
Apr 12 Javascript
JavaScript设计模式之策略模式实例
Oct 10 Javascript
node.js中的fs.symlink方法使用说明
Dec 15 Javascript
JS多文件上传的实例代码
Jan 11 Javascript
js 递归和定时器的实例解析
Feb 03 Javascript
js按条件生成随机json:randomjson实现方法
Apr 07 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
Dec 16 Javascript
Layui数据表格跳转到指定页的实现方法
Sep 05 Javascript
Vue中nprogress页面加载进度条的方法实现
Nov 13 Javascript
避坑之 JavaScript 中的toFixed()和正则表达式
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
德劲1104的电路分析与改良
2021/03/01 无线电
PHP 替换模板变量实现步骤
2009/08/24 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
单台服务器的PHP进程之间实现共享内存的方法
2014/06/13 PHP
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
PHP实现用户登录的案例代码
2018/05/10 PHP
javascript 面向对象编程基础:继承
2009/08/21 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
js函数返回多个返回值的示例代码
2013/11/05 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
客户端js判断文件类型和文件大小即限制上传大小
2013/11/20 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
如何在Node和浏览器控制台中打印彩色文字
2020/01/09 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
[02:07]DOTA2新英雄展现中国元素,完美“圣典”亮相央视
2016/12/19 DOTA
python面试题之列表声明实例分析
2019/07/08 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
Django 多对多字段的更新和插入数据实例
2020/03/31 Python
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
新学期红领巾广播稿
2014/01/14 职场文书
庆元旦迎新年广播稿
2014/02/18 职场文书
文明寄语大全
2014/04/11 职场文书
安全生产大检查方案
2014/05/07 职场文书
合理化建议书
2015/02/04 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
《牧场之国》教学反思
2016/02/22 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript