微信提供了文件上传的方法wx.uploadFile来上传我们的图片
wx.chooseImage({ success: function(res) { var tempFilePaths = res.tempFilePaths wx.uploadFile({ url: 'http://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址 filePath: tempFilePaths[0], name: 'file', formData:{ 'user': 'test' }, success: function(res){ var data = res.data //do something } }) } })
但是针对多图上传微信没有给出相应的方法来解决,如此我们只能消耗我们程序猿的脑细胞来解决了,最开始我使用了for循环来循环上传我的图片,恰好本人是苹果手机所以上传是没有问题的,本以为轻松解决了这个问题但是提交到测试以后坑了。测试MM说他那里提示上传失败。
于是借来测试手机打印出来错误消息
uploadFile:fail:the same task is working
wx.uploadFile不能并行,因为wx.uploadFile是一个异步函数,所以循环的时候在安卓手机上会出现并行
所以上面的通过循环wx.uploadFile方法进行多图上传肯定是不能行的了,既然不能并行我们是不是可以让wx.uploadFile执行完后再执行wx.uploadFile了。看下修改后的代码
这里为上传图片的方法,在里面作出判断上传完成以后重复调用upload_img
var img_index = 0;//上传带第几张 var image_list1 = new Array(); //上传图片 var upload_img = function (that, file_name) { that.setData({ hidden: false }); wx.uploadFile({ url: '', filePath: file_name, name: 'file', success: function (res) { //此处判断是否上传成功 var obj = JSON.parse(res.data); if (obj.ret_code == 1) { //上传成功以后将上传成功的图片加入数组显示出来,这样可以避免没有上传成功的图片就不显示 var uploads = new Array(); var image_list = new Array(); //加入返回值 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 < image_list1.length) { upload_img(that, '' + image_list1[img_index]); } else { that.setData({ hidden: true }); } //刷新界面 that.update(); } else { that.setData({ hidden: true }); utils.show_toast(obj.msg); } }, fail: function (res) { that.setData({ hidden: true }); utils.show_toast('加入失败'); } }) }
选择图片方法
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=new Array(); //将选择的图片放入要上传的数组中 for (var i = 0; i < res.tempFilePaths.length; i++) { console.log(i + ';' + res.tempFilePaths[i]); image_list1.push(res.tempFilePaths[i]); } //最开始上传第一张图片 upload_img(that, '' + image_list1[img_index]); }, fail: function () { utils.show_toast('选取失败'); } }) } else { utils.show_toast('当前最多只能选择9张图片'); }
通过上面的代码就可以完成多图上传了,这样也避免了Android手机报错的漏洞
这里封装了一个错误消息弹窗避免写重复的代码
utils.show_toast(‘当前最多只能选择9张图片') //弹窗 function show_toast(text) { wx.showToast({ title: text, icon: ‘success', duration: 2000 }); }
以上所述是小编给大家介绍的微信多图上传解决android多图上传失败问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
大佬们,问一下原生小程序上传图片,如果newData = dataDict[1] 为什么只能把type为5的传上去,后面那一组就传不上去了。最后一张图是后端要的数据格式 我尝试过把 [Pics[${picIndex}].type]: picObj.type, 改为Pics[${Index}].type]: picObj.type, name: Pics[${picIndex}].Pic,改为nam
本文向大家介绍PHP实现多图上传和单图上传功能,包括了PHP实现多图上传和单图上传功能的使用技巧和注意事项,需要的朋友参考一下 下面一段代码给大家介绍php实现单图上传和多图上传的功能,具体代码如下所示: 总结 以上所述是小编给大家介绍的PHP实现多图上传和单图上传功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!
本文向大家介绍PHP仿微信多图片预览上传实例代码,包括了PHP仿微信多图片预览上传实例代码的使用技巧和注意事项,需要的朋友参考一下 生产图片区域,上传按钮#btn可替换自己想要的图片 plupload上传 ajax删除上传的图片 本文为原创文章,如需转载,请注明来源sucaihuo.com并保留原文链接:http://www.sucaihuo.com/js/830.html
本文向大家介绍asp.net文件上传解决方案(图片上传、单文件上传、多文件上传、检查文件类型),包括了asp.net文件上传解决方案(图片上传、单文件上传、多文件上传、检查文件类型)的使用技巧和注意事项,需要的朋友参考一下 小编之前也介绍了许多ASP.NET文件上传的解决案例,今天来个asp.net文件上传大集合。 1 使用标准HTML来进行图片上传 前台代码: 后台代码: 2 单文件上传 这是最
问题内容: 我也曾在SO和其他教程中发表过很多文章,但是我没有得到任何最新的官方或其他文章,这些文章不包含使用Volley上传多个图像的弃用代码。我知道Apache HTTP Client删除并在新的android M中相关,因此建议改用下面的方法。 那么,有谁能帮我完成新的不推荐使用的少排球类上载多张图片的工作? 问题答案: 您可以从此处使用volley的最新版本。这是一个非官方的镜像,带有一些
http://letitripple.org/htmlform.html 这是此html表单创建的请求。(我从chrome开发者工具中获得) ------WebKitFormBoundaryPug6XAUALAUPBR86内容-配置:表单-数据;name=“wp-user-avatars”;filename=“desert.jpg”内容-类型:image/jpeg