最近开发微信小程序要求上传图片到阿里云oss上,所以就顺手整理一下整个过程啦。

前提

开通oss服务和创建oss存储空间啦(这个就自己去解决吧)下面接入正题:

步骤一:配置 Bucket 跨域

客户端进行表单直传到 OSS 时,会从浏览器向 OSS 发送带有 Origin 的请求消息。OSS 对带有 Origin 头的请求消息会进行跨域规则(CORS)的验证。因此需要为 Bucket 设置跨域规则以支持 Post 方法。
按照图下面配置就行:

步骤 2:配置外网域名到小程序的上传域名白名单中

1.通过 OSS 控制台查看外网域名。

2.登录微信小程序平台,配置小程序的上传域名白名单。

(以上准备就绪后就开始编写小程序代码啦~)

小程序直接上传

一.获取上传需要的签名(signature)和加密策略(policy)。
1.使用web上传的Dom 进行测试 :下载地址
2.修改 Demo 中 upload.js 的密钥和地址。

3.进行上传测试并得到signature和policy。

4.使用小程序代码上传图片

 wx.chooseImage({success: function (res) {var tempFilePaths = res.tempFilePathsconsole.log('chooseImage success, temp path is: ', tempFilePaths[0])wx.uploadFile({url: 'xxxxxxx',//上传的路径filePath: tempFilePaths[0],name: 'file',formData: {name: tempFilePaths[0],key: "${filename}",//上传图片的名字和路径(默认路径根目录,自定义目录:xxx/xxx.png)policy: "xxxxxxxxxxxxxxxxxxxxxx",OSSAccessKeyId: "xxxxxxxxxxxxxxxx",success_action_status: "200",signature: "xxxxxxxxxxxxxxx",},success: function (res) {console.log('chooseImage success, temp path is: ', tempFilePaths[0])wx.showToast({title: "上传成功",icon: 'success',duration: 1000})},fail: function ({errMsg}) {console.log('upladImage fail, errMsg is: ', errMsg)wx.showToast({title: "上传失败",duration: 1000})},})}})

二、后台返回签名(signature)和加密策略(policy)。
(上述“一”方法中由于有accessid/accesskey暴露在外,有泄漏的风险) 所以建议使用后端签名:
大概流程:请求后端接口–>获取返回的签名等所用到的数据–>调用上述 “一(4)”中的方法即可,整理后如下:

 //上传图片到阿里云
function uploadImgFile(params = {}) {let data = new Promise((resolve, reject) => {wx.chooseImage({count: 1,sizeType: ["compressed"],sourceType: ["album"],success: function (res) {//console.log(res);const imgsrc = res.tempFilePaths[0];const index = imgsrc.lastIndexOf("\.");const imgExtension = imgsrc.substring(index + 1, imgsrc.length);const imgPath = params.fileName + "." + imgExtension;wx.uploadFile({url: params.url,//上传地址,filePath: imgsrc,name: 'file',formData: {name: imgsrc,key: imgPath,//文件上传的位置(默认根目录)+文件名字 默认:"$(filename)"policy: params.policy,OSSAccessKeyId: params.accessid,success_action_status: '200', //让服务端返回200,不然,默认会返回204signature: params.signature,},success: function(res){let imgUrl = params.url + "/"+imgPathlet _obj = Object.assign({ imgUrl: imgUrl }, res);resolve(_obj);}, fail: function(res){reject("上传失败");}})},})})return data;
}
//调用时
let obj = {url: "xxxxxxxxxx",//上传路径fileName: "xxx/" + new Date().getTime(),//上传到xxx文件夹下(我这里图片重新命名)policy: policy,//后端返回的policyaccessid: accessid,//后端返回的accessidsignature: signature,//后端返回的signature}uploadImgFile(obj).then(function (res) {//console.log(res)if (res.statusCode==200){let src = res.imgUrl;//返回上传的图片地址}else{wx.showToast({title: res.errMsg,icon:'none',duration:2000,})}}).catch(function (err) {console.log('err:' + err);})

以上为自己整理的微信上传图片到oss全部内容,如有不足之处望指教。
注:至于评论中提到请求403问题请参考一下官方文档可能对你会有帮助:https://help.aliyun.com/document_detail/32077.html?spm=a2c4g.11186623.6.1220.1e4177a3nVKaEc

参考文档:(https://help.aliyun.com/document_detail/92883.html?spm=a2c4g.11186623.6.670.5265350asB84kG)

微信小程序上传图片到阿里云oss方法相关推荐

  1. 微信小程序上传图片到阿里云OSS

    微信小程序代码 1.wxml: <image src="{{userInfo.headImg}}" class="user-head_img" bindt ...

  2. 微信小程序录音直传阿里云OSS并语音识别

    前言 如题:做一个录音文字识别功能,知识点有三个,分别是微信小程序的录音功能.录音文件直传阿里云OSS.使用阿里云的录音文件识别接口返回识别后的文字 一.微信小程序录音 官方文档:微信小程序全局唯一的 ...

  3. 微信小程序上传阿里云OSS,返回204,400,403,405,解决方案

    目录 微信小程序上传阿里云 ==OSSAccessKeyId,policy,signature==如何获取呢? 配置Bucket跨域访问 配置外网域名到小程序的域名白名单 上传报错(返回400,403 ...

  4. 微信小程序/vue通过阿里云上传图片

    1.首先前端放入获取上传的组件 微信小程序uview组件: https://www.uviewui.com/components/upload.html vue所使用的element组件: https ...

  5. 微信小程序上传阿里云视频文件流程及代码

    为了微信小程序客服端实现自拍视频能够分享给多个好友,我们需要把小程序自拍的视频存储到服务器,而阿里云在性能和速度上比较不错,所以我们选择了阿里云作服务器. 第一步.微信小程序项目创建 1. 到http ...

  6. Javaweb和微信小程序项目部署阿里云服务器总结(上)

    谈到微信小程序的java后台怎么部署在阿里云服务器上的问题,弯弯绕绕,好多坑,网上的博客资料也特别乱,博主也是在没有任何经验和指导下花了几天的工夫才完成的.这里为了方便大家不踩坑,总结了下整个流程和注 ...

  7. 微信小程序MQTT模拟器 阿里云物联网平台测试

    陈拓 chentuo@ms.xab.ac.cn 2019.09.27/2020.01.20 原文参考:微信小程序-MQTT模拟器 https://www.yuque.com/cloud-dev/iot ...

  8. uniapp(微信小程序)上传图片到阿里oss

    首先推荐下参考的文章 1.https://www.jianshu.com/p/34d6dcbdc2e5 2.https://help.aliyun.com/document_detail/92883. ...

  9. 小程序中使用阿里云oss上传视频怎么获得视频截图?

    在视频地址后面加上如下的后缀,就可以获取视频内部帧图片,当作封面使用. ?x-oss-process=video/snapshot,t_1000,m_fast ?x-oss-process=video ...

最新文章

  1. sftp 中文乱码 连接后_sftp服务器中文乱码
  2. DM8168 开发环境搭建
  3. 不定积分24个基本公式_不定积分计算—典型题及解题技巧
  4. C++插入排序(附完整源码)
  5. 滴水穿石--MYSQL导入导出常用命令
  6. 组合模式源码解析(jdk+mybatis)
  7. 如何扩展分布式日志组件(Exceptionless)的日志通知?
  8. Python的os模块常用文件夹的增删改查详解
  9. iOS TableView 使用详解
  10. javascript 中XMLHttpRequest 实现前台向后台的交互
  11. 微信客户端电话人工服务器,微信客服电话多少 微信客服电话人工服务怎么接通...
  12. Mac空格键快速预览不能用了怎么办?
  13. 如何在应用中打开系统播放器
  14. 互联网产品经理必读书籍
  15. html图片做成菱形,html – 使用css创建菱形叠加图像
  16. 阿里云学生机 部署JavaWeb项目
  17. 把梁单元练到极致会怎么样
  18. 2你懂C语言,我不信(C深度提高)视频教程-王桂林-专题视频课程
  19. 微信小程序 参数传递
  20. [MTK]lk USB与下载工具交互简图

热门文章

  1. 视频拼接剪辑怎么弄?分享三个小妙招给你们
  2. 钕铁硼产品磁性能相对检测原理与技术
  3. Pyecharts绘制阶梯图
  4. 【编译原理】LL(1)语法分析器
  5. 软考嵌入式系统设计师2011年上午试题总结
  6. 用ngrok做内网穿透
  7. Mybatis--SqlSession对象创建过程
  8. NANK南卡A2主动降噪耳机测评:长续航40dB深度降噪
  9. 字符串转化为Json
  10. Maven配置nexus私服地址