你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 微信JSSDK多圖片上傳而且處理IOS體系上傳一向加載的成績

微信JSSDK多圖片上傳而且處理IOS體系上傳一向加載的成績

編輯:IOS開發綜合

微信多圖片上傳必需挨個上傳,也就是不克不及並行,得串行:

那末我們可以界說一個以下所示的上傳函數:

var serverIds = [];

function uploadImages(localImagesIds) {
if (localImagesIds.length === 0) {
$.showPreloader('正在提交數據...');
$('form').submit();
}
wx.uploadImage({
localId: localImagesIds[0], // 須要上傳的圖片的當地ID,由chooseImage接口取得
isShowProgressTips: 1, // 默許為1,顯示進度提醒
success: function (res) {
serverIds.push(res.serverId); // 前往圖片的辦事器端ID
localImagesIds.shift();
uploadImages(localImagesIds);
},
fail: function (res) {
$.alert('上傳掉敗,請從新上傳!');
}
});
}

上傳函數界說了,那末當點擊圖片框的時刻,須要選擇圖片,界說以下:

//選擇圖片
$('#uploadImages img').on('click', function () {
var $img = $(this);
wx.chooseImage({
count: 1, // 默許9
sizeType: ['original', 'compressed'], // 可以指定是原圖照樣緊縮圖,默許兩者都有
sourceType: ['album', 'camera'], // 可以指定起源是相冊照樣相機,默許兩者都有
success: function (res) {
var localIds = res.localIds; // 前往選定照片的當地ID列表,localId可以作為img標簽的src屬性顯示圖片
//$.alert(localIds[0]);
$img.attr('src', localIds[0]).addClass('uploaded');
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
});

當用戶選擇了一切的圖片以後,就須要上傳圖片了。這裡就須要用到我們適才界說的函數了,詳細代碼以下所示:

//提交事宜
$('#btnSubmit').on('click', function () {
var $chooseImages = $('#uploadImages img.uploaded');
if ($chooseImages.length === 0) {
$.alert('請上傳照片!');
return;
}
$.showPreloader('正在上傳照片...');
var localImagesIds = [];
$chooseImages.each(function () {
localImagesIds.push($(this).attr('src'));
});
uploadImages(localImagesIds);
});

如下面代碼所示,改處挪用了函數uploadImages,然後將localImagesIds傳遞過去了。在uploadImages函數中,應用了遞歸,但一張圖片上傳完成後,就會再次挪用自己,持續上傳下一張圖片,請留意以下症結代碼:

wx.uploadImage({
localId: localId, // 須要上傳的圖片的當地ID,由chooseImage接口取得
isShowProgressTips: 1, // 默許為1,顯示進度提醒
success: function (res) {
serverIds.push(res.serverId); // 前往圖片的辦事器端ID
localImagesIds.shift();
uploadImages(localImagesIds);
},
fail: function (res) {
$.alert('上傳掉敗,請從新上傳!');
}
});

如許,一切看起來是OK的,並且Android體系沒有任何成績。然則,IOS卻沒法正常上傳,一向會顯示加載狀況。代碼重復檢討,木有任何成績,那末確定是微信的坑了。。。。

歷經九九八十一難,終究找到處理方法:

var localId = localImagesIds[0];
//處理IOS沒法上傳的坑
if (localId.indexOf("wxlocalresource") != -1) {
localId = localId.replace("wxlocalresource", "wxLocalResource");
}

uploadImages全體代碼以下所示:

function uploadImages(localImagesIds) {
if (localImagesIds.length === 0) {
$.showPreloader('正在提交數據...');
$('form').submit();
}
var localId = localImagesIds[0];
//處理IOS沒法上傳的坑
if (localId.indexOf("wxlocalresource") != -1) {
localId = localId.replace("wxlocalresource", "wxLocalResource");
}
wx.uploadImage({
localId: localId, // 須要上傳的圖片的當地ID,由chooseImage接口取得
isShowProgressTips: 1, // 默許為1,顯示進度提醒
success: function (res) {
serverIds.push(res.serverId); // 前往圖片的辦事器端ID
localImagesIds.shift();
uploadImages(localImagesIds);
},
fail: function (res) {
$.alert('上傳掉敗,請從新上傳!');
}
});
}

以上所述是針對微信JSSDK多圖片上傳而且處理IOS體系上傳一向加載的成績的相干引見,願望對年夜家有所贊助!

【微信JSSDK多圖片上傳而且處理IOS體系上傳一向加載的成績】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved