微信多图上传解决android多图上传失败问题
微信提供了文件上传的方法wx.uploadFile来上传我们的图片
wx.chooseImage({
success:function(res){
vartempFilePaths=res.tempFilePaths
wx.uploadFile({
url:'http://example.weixin.qq.com/upload',//仅为示例,非真实的接口地址
filePath:tempFilePaths[0],
name:'file',
formData:{
'user':'test'
},
success:function(res){
vardata=res.data
//dosomething
}
})
}
})
但是针对多图上传微信没有给出相应的方法来解决,如此我们只能消耗我们程序猿的脑细胞来解决了,最开始我使用了for循环来循环上传我的图片,恰好本人是苹果手机所以上传是没有问题的,本以为轻松解决了这个问题但是提交到测试以后坑了。测试MM说他那里提示上传失败。
于是借来测试手机打印出来错误消息
uploadFile:fail:thesametaskisworking
wx.uploadFile不能并行,因为wx.uploadFile是一个异步函数,所以循环的时候在安卓手机上会出现并行
所以上面的通过循环wx.uploadFile方法进行多图上传肯定是不能行的了,既然不能并行我们是不是可以让wx.uploadFile执行完后再执行wx.uploadFile了。看下修改后的代码
这里为上传图片的方法,在里面作出判断上传完成以后重复调用upload_img
varimg_index=0;//上传带第几张
varimage_list1=newArray();
//上传图片
varupload_img=function(that,file_name){
that.setData({
hidden:false
});
wx.uploadFile({
url:'',
filePath:file_name,
name:'file',
success:function(res){
//此处判断是否上传成功
varobj=JSON.parse(res.data);
if(obj.ret_code==1){
//上传成功以后将上传成功的图片加入数组显示出来,这样可以避免没有上传成功的图片就不显示
varuploads=newArray();
varimage_list=newArray();
//加入返回值
uploads=that.data.upload;
uploads.push(obj.data);
//加入图片
image_list=that.data.tempFilePaths;
image_list.push(file_name);
that.setData({
upload:uploads,
tempFilePaths:image_list
});
//上传成功一次img_index+1,下面再次调用upload_img上传图片就可以直接传image_list1[img_index],也就是下一张图片的链接
img_index=img_index+1;
//这里需要作出判断图片是否上传完成,如果完成则取消缓冲框hidden
if(img_index
选择图片方法
if(that.data.tempFilePaths.length<9){
wx.chooseImage({
count:9-that.data.tempFilePaths.length,//最多可以选择的图片张数,默认9
sizeType:['compressed'],//original原图,compressed压缩图,默认二者都有
sourceType:['album','camera'],//album从相册选图,camera使用相机,默认二者都有
success:function(res){
//success
img_index=0;
image_list1=newArray();
//将选择的图片放入要上传的数组中
for(vari=0;i
通过上面的代码就可以完成多图上传了,这样也避免了Android手机报错的漏洞
这里封装了一个错误消息弹窗避免写重复的代码
utils.show_toast(‘当前最多只能选择9张图片')
//弹窗
functionshow_toast(text){
wx.showToast({
title:text,
icon:‘success',
duration:2000
});
}
以上所述是小编给大家介绍的微信多图上传解决android多图上传失败问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!