为了微信小程序客服端实现自拍视频能够分享给多个好友,我们需要把小程序自拍的视频存储到服务器,而阿里云在性能和速度上比较不错,所以我们选择了阿里云作服务器。
阿里云官方文档:
https://help.aliyun.com/document_detail/31925.html?spm=a2c4g.11186623.6.634.AMs4Fj
需要由后台提供接口,前端获取一些必要参数
纯手写,踩了半天多的坑干出来了。。。
网上也有对于阿里云如何在微信小程序里使用,但是很不全,包括阿里云文档的最佳实践里。
上传流程:
选择图片–>获取到图片临时路径,将图片临时路径存入data
点击发布按钮–>获取oss参数
获取oss参数成功–>执行上传阿里云
上传阿里云成功–>执行上传服务器
上传服务器成功–>结束整个上传流程
由于为了方便大家浏览,没有用函数回调.
大家可以根据自己的需求,结合自己的场景,来进行函数回调或者使用ES6的Promise方法.
上传阿里云过程中几个容易忽视的坑: 图片路径处理/时间戳判断
话不多说上代码了。
1 upvideo(){ 2 var aliOssParams = util.aliOssParams();//主要是获取上传阿里云的加密策略policy和签名signature;以及上传自己要上传到阿里云的地址,当然还有自己阿里云accessid。 3 //上传视频到阿里云 4 var that = this; 5 wx.chooseVideo({ 6 maxDuration: 10, 7 success: function (res) { 8 var tempFilePath = res.tempFilePath; 9 var stringFilePath = String(tempFilePath); 10 var indexType = stringFilePath.lastIndexOf('.'); 11 var type = stringFilePath.substring(indexType); 12 var alikey = 'video/'+new Date().getTime() + 13 Math.floor(Math.random() * 1000)+ type ;//随机1000内的数加上时间戳作为你存放在阿里云video目录下名字和类型。 14 wx.uploadFile({ 15 url:aliOssParams.host, 16 filePath: tempFilePath, 17 name: 'file', 18 formData: { 19 name: tempFilePath, 20 key: alikey,//这个是关键它是定义存放在阿里云那个目录下 21 policy:aliOssParams.policy,//上传阿里云的加密策略 22 OSSAccessKeyId: aliOssParams.aid,//自己阿里云的aid 23 success_action_status: "200", 24 signature: aliOssParams.signature,//上传阿里云的签名 25 }, 26 success: function (res) { 27 var videoUrl = aliOssParams.host+'/'+alikey;//这就是 28 刚上传阿里云后的存放的地址链接,通过它打开你刚上传视频。 29 that.videoUrl = videoUrl; 30 console.log('that',that,videoUrl); 31 wx.showToast({ 32 title: "上传成功", 33 icon: 'success', 34 duration: 1000 35 }) 36 }, 37 fail: function ({ errMsg }) { 38 wx.showToast({ 39 title: "上传失败", 40 duration: 1000 41 }) 42 }, 43 }) 44 } 45 }) 46
通过代码大家可以看到最关键的是啥,如何获取加密策略和签名了,当然了,阿里云最佳实践里有demo,但是crypto这个库已经废弃了,它demo给你带过来的crypto,你只能自己去提取了。
这里是我提为大家提取的crypto函数,直接copy用。
有了上面的crypto工具函数了,就去看看具体如何生成签名与加密策略吧。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
至于如何上传图片,大体如下,请保证以上都已经跑通了,base64记得你上面引到。。
多张图片的上传如此
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
|
都是自己亲测,亲坑。。。码字很累。解决了你的问题,就分享一哈吧。