一、背景
当微信小程序有上传多张图片(大于等于2张)的功能时,如果使用并行上传的方案,在ios上是可以正常上传图片的,但在android上,通过手机调试信息,可以看到,只有第一次的请求成功上传图片,其余的并行上传均失败,导致这个问题的根本原因在于android当前版本的小程序尚不支持并行上传多图
二、解决方案
既然android不能并行上传,那么为了小程序在android、ios上都能成功跑起来,我们就只能使用串行上传的解决方案,目前本人的解决方案是,将上传的方法写在js模板类中,通过传入一个包含了图片地址的数组参数,如果数组不为空,则获取最新的一个图片地址,执行上传,在success回调函数中,删除已上传的图片地址,再调用方法,代码模板如下
//common.js
function sendPhotos(arr){
if(arr.length != 0){
wx.uploadFile({
url: 'http://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址
filePath: arr[0],
name: 'file',
formData:{
'user': 'test'
},
success: function(res){
var data = res.data
//do something
arr.splice(0,1)
sendPhotos(arr)
}
})
}
}
module.exports.sendPhotos = sendPhotos