微信多圖上傳解決android多圖上傳失敗問(wèn)題
微信提供了文件上傳的方法wx.uploadFile來(lái)上傳我們的圖片
wx.chooseImage({
success: function(res) {
var tempFilePaths = res.tempFilePaths
wx.uploadFile({
url: 'http://example.weixin.qq.com/upload', //僅為示例,非真實(shí)的接口地址
filePath: tempFilePaths[0],
name: 'file',
formData:{
'user': 'test'
},
success: function(res){
var data = res.data
//do something
}
})
}
})
但是針對(duì)多圖上傳微信沒(méi)有給出相應(yīng)的方法來(lái)解決,如此我們只能消耗我們程序猿的腦細(xì)胞來(lái)解決了,最開(kāi)始我使用了for循環(huán)來(lái)循環(huán)上傳我的圖片,恰好本人是蘋(píng)果手機(jī)所以上傳是沒(méi)有問(wèn)題的,本以為輕松解決了這個(gè)問(wèn)題但是提交到測(cè)試以后坑了。測(cè)試MM說(shuō)他那里提示上傳失敗。
于是借來(lái)測(cè)試手機(jī)打印出來(lái)錯(cuò)誤消息
uploadFile:fail:the same task is working
wx.uploadFile不能并行,因?yàn)閣x.uploadFile是一個(gè)異步函數(shù),所以循環(huán)的時(shí)候在安卓手機(jī)上會(huì)出現(xiàn)并行
所以上面的通過(guò)循環(huán)wx.uploadFile方法進(jìn)行多圖上傳肯定是不能行的了,既然不能并行我們是不是可以讓wx.uploadFile執(zhí)行完后再執(zhí)行wx.uploadFile了。看下修改后的代碼
這里為上傳圖片的方法,在里面作出判斷上傳完成以后重復(fù)調(diào)用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) {
//上傳成功以后將上傳成功的圖片加入數(shù)組顯示出來(lái),這樣可以避免沒(méi)有上傳成功的圖片就不顯示
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,下面再次調(diào)用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, // 最多可以選擇的圖片張數(shù),默認(rèn)9
sizeType: ['compressed'], // original 原圖,compressed 壓縮圖,默認(rèn)二者都有
sourceType: ['album', 'camera'], // album 從相冊(cè)選圖,camera 使用相機(jī),默認(rèn)二者都有
success: function (res) {
// success
img_index = 0;
image_list1=new Array();
//將選擇的圖片放入要上傳的數(shù)組中
for (var i = 0; i < res.tempFilePaths.length; i++) {
console.log(i + ';' + res.tempFilePaths[i]);
image_list1.push(res.tempFilePaths[i]);
}
//最開(kāi)始上傳第一張圖片
upload_img(that, '' + image_list1[img_index]);
},
fail: function () {
utils.show_toast('選取失敗');
}
})
} else {
utils.show_toast('當(dāng)前最多只能選擇9張圖片');
}
通過(guò)上面的代碼就可以完成多圖上傳了,這樣也避免了Android手機(jī)報(bào)錯(cuò)的漏洞
這里封裝了一個(gè)錯(cuò)誤消息彈窗避免寫(xiě)重復(fù)的代碼
utils.show_toast(‘當(dāng)前最多只能選擇9張圖片')
//彈窗
function show_toast(text) {
wx.showToast({
title: text,
icon: ‘success',
duration: 2000
});
}
以上所述是小編給大家介紹的微信多圖上傳解決android多圖上傳失敗問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Android實(shí)現(xiàn)朋友圈多圖顯示功能
- Android 自定義 HorizontalScrollView 打造多圖片OOM 的橫向滑動(dòng)效果(實(shí)例代碼)
- Android OkHttp 結(jié)合php 多圖片上傳實(shí)例
- Android 加載大圖及多圖避免程序出現(xiàn)OOM(OutOfMemory)異常
- Android Retrofit實(shí)現(xiàn)多圖片/文件、圖文上傳功能
- Android仿微信微博多圖展示效果
- Android 加載大圖、多圖和LruCache緩存詳細(xì)介紹
- Android高效加載大圖、多圖解決方案 有效避免程序OOM
- Android自定義View實(shí)現(xiàn)多圖片選擇控件
- Android仿微信發(fā)表說(shuō)說(shuō)實(shí)現(xiàn)拍照、多圖上傳功能
- android實(shí)現(xiàn)多圖文分享朋友圈功能
相關(guān)文章
Android studio 4.1打包失敗和插件錯(cuò)誤提示的解決
這篇文章主要介紹了Android studio 4.1打包失敗和插件錯(cuò)誤提示的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Android實(shí)現(xiàn)為Notification加上一個(gè)進(jìn)度條的方法
這篇文章主要介紹了Android實(shí)現(xiàn)為Notification加上一個(gè)進(jìn)度條的方法,結(jié)合實(shí)例形式分析了Android針對(duì)Notification組件的相關(guān)操作技巧,需要的朋友可以參考下2016-10-10
Android啟動(dòng)初始化方案App StartUp的應(yīng)用詳解
這篇文章主要介紹了Android啟動(dòng)初始化方案App StartUp的使用方法,StartUp是為了App的啟動(dòng)提供的一套簡(jiǎn)單、高效的初始化方案,下面我們來(lái)詳細(xì)了解2022-09-09
Android Jetpack Compose無(wú)限加載列表
大家好,本篇文章主要講的是Android Jetpack Compose無(wú)限加載列表,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下2022-01-01
安卓手機(jī)socket通信(服務(wù)器和客戶(hù)端)
這篇文章主要為大家詳細(xì)介紹了安卓手機(jī)socket通信,服務(wù)器和客戶(hù)端的代碼,感興趣的小伙伴們可以參考一下2016-08-08

