微信多图上传解决android多图上传失败问题

微信提供了文件上传的方法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多图上传失败问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-09-20 12:29:23

微信多图上传解决android多图上传失败问题的相关文章

解决Android SDK下载和更新失败的方法详解_Android

最近刚换了电脑,开始搭建Android开发环境的时候,下载SDK总是会出现如下错误: 复制代码 代码如下: Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-1.xml. 说dl-ssl.google.com在大陆被强了,解决方法就是修改C:\Windows\System32\drivers\etc\hosts文件.添加一行: 复制代码 代码如下: 74.125.237.1       dl-s

解决Android SDK下载和更新失败的方法详解

最近刚换了电脑,开始搭建Android开发环境的时候,下载SDK总是会出现如下错误: 复制代码 代码如下: Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-1.xml. 说dl-ssl.google.com在大陆被强了,解决方法就是修改C:\Windows\System32\drivers\etc\hosts文件.添加一行: 复制代码 代码如下: 74.125.237.1       dl-s

Android图片压缩上传之基础篇_Android

在android程序开发中我们经常见到需要上传图片的场景,在这里有个技术点,需要把图片压缩处理,然后再进行上传.这样可以减少流量的消耗,提高图片的上传速度等问题. 关于android如何压缩,网上的资料也是很多,但大多数都是代码片段,讲解压缩步骤,而没有一个实用的工具类库.那么如何将压缩算法封装成一个实用工具库呢?其中会遇到些什么问题,比如: 1.需要压缩的图片有多少 2.压缩后的图片是覆盖还是保存到另外的目录 3.如果是另存目录需要将原始图片删除吗 4.如果改变压缩后的图片的尺寸大小是按照原图

微信小程序 wx.uploadFile无法上传解决办法_JavaScript

微信小程序 wx.uploadFile无法上传解决办法 微信安卓客户端无法使用wx.uploadFile上传文件的问题有不少开发者都遇到. 我也因为一直不能解决,硬着头皮提交审核最后被拒(抱着审核者最好用iOS检测的心态,不巧审核我应用的用的是安卓),才尝试使用第三方的手段解决. 最终我是用了七牛第三方存储的方式,将文件直接上传至七牛的储存的空间上再回调使用. 当然像又拍云,万象优图这些第三方存储源都可以采用这种思路. 首先是将七牛的https上传域名放进小程序的域名名单中. 这里我使用的是七牛

史上最详细Android集成QQ,微信,微博分享(不用第三方)持续更新中

现在项目中用个第三方登录,或分享已经不是什么稀奇事了,但是要想把这个功能做好,那可就不容易了.估计到这里就有人会说了,扯犊子,这玩意,我用第三方sdk,什么umeng,sharesdk分分钟给你做出来,可是这些第三方sdk只有对项目的分享要求不高的时候才适合,如果要定制分享,那我就只能呵呵.虽然第三方登录或分享没什么技术难度,但是各种配置,而且每一个都不太一样,少配置一个地方代码就通不过了,所以基于上问题,特写此文以备不时之需. 好,上面扯太多了,现在正式上代码,我们先从QQ入手,你问为什么,因

Android图片压缩上传之基础篇

在android程序开发中我们经常见到需要上传图片的场景,在这里有个技术点,需要把图片压缩处理,然后再进行上传.这样可以减少流量的消耗,提高图片的上传速度等问题. 关于android如何压缩,网上的资料也是很多,但大多数都是代码片段,讲解压缩步骤,而没有一个实用的工具类库.那么如何将压缩算法封装成一个实用工具库呢?其中会遇到些什么问题,比如: 1.需要压缩的图片有多少 2.压缩后的图片是覆盖还是保存到另外的目录 3.如果是另存目录需要将原始图片删除吗 4.如果改变压缩后的图片的尺寸大小是按照原图

美图秀秀设计分析:在Android,iPhone上的交互设计

文章描述:只是自己对于美图秀秀这款产品在设计上的一些想法,权当抛砖引玉,还请指点. 出于职业习惯,使用一款产品时总会不自觉地对其设计进行分析.当打开美图秀秀时,我知道,我又开始了. 美图秀秀是厦门美图科技有限公司旗下的一款产品,分别有 PC 客户端, Android, iPhone 应用.公司旗下还有其它几款产品:美图看看--免费看图软件,美图拍拍--摄像头自拍软件,美图淘淘--网店图片批理处理软件,美图化妆秀--强大的上妆软件.个人非常看好美图淘淘,依托淘宝这个大平台,它为广大淘宝店家们解决了

服务器-Android多图片上传会发生覆盖问题

问题描述 Android多图片上传会发生覆盖问题 我写了一个多图片上传的小程序,选出的图片存在List集合里,然后通过for循环发送到服务器里.可是却发生了收到都是最后一张图片,这该怎么解决!求大神相助!!!!!!!!!!!!!!!!!!!! 解决方案 应该是服务器那边的问题,服务器在每个上传的图片都应该保存到不同的文件名上 解决方案二: 服务器那边没处理好... 解决方案三: 访问网络是一个耗时的操作,程序会优先处理UI主线程,执行完for语句之后再跳转到子线程去请求服务器,于是乎...每次都

Android 提交或者上传数据时的dialog弹框动画效果

效果图如下所示: 类似这种弹框里含有动画,一般我们在上传数据或者支付的时候会用到,当然,假如我们换几张图片,还可以把它当做是加载数据的时候使用,总之这是一个dialog弹框,只不过这个弹框在弹出后,上面有动画的运行. 上代码 首先是布局文件 : <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="200dp" andr