微信公众号多图上传 无需后端去微信服务器下载
多图时候getLocalImgData不执行
我们知道安卓端微信公众号受内置浏览器限制;UI框架在部分安卓手机每次只能上传一张照片,我先是使用了vant,很多安卓机不可使用,又局部注册element 然后改写他的方法也不可以实现多图上传;
然后只能乖乖使用微信js-sdk;
微信提供的思路就是
前端 选择图片 回显图片 图片上传到微信服务器 (保存3天)
后端 去微信服务器根据id下载图片
但是我们接口都已经写好了 而且也不想浪费时间在一个公众号上;
之前的接口传file文件携带参数;
我现在思路
前端
选择图片得到 localId (chooseImage)
根据localId转成base64(getLocalImgData)
根据base64转成file文件
接下来上传到自己服务器
后端 不动
遇到的最大的问题 getLocalImgData 多图时候这个方法不执行;
问题详述:
chooseImage获取图片得到localid数组,遍历数组去调用getLocalImgData 这个方法
但是前期死活不调用,也没有执行成功回调也没有失败回调 甚至没有执行的那个回调,使用checkJsApi检查得到也是没问题的
调试时候发现只传一张是可以得到base64的,我感觉问题可能出现在异步问题上,结果发现还真是
getLocalImgData 必须等上一个结束以后才可以执行下一个,直接遍历调用必出问题
最后写法
chooseImg (item) {
let that = this;
this.picObjectId = item.order_id;
wx.chooseImage({
count: 9, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
that