1. 程式人生 > >微信上傳圖片問題。

微信上傳圖片問題。

地圖 function 函數 ring sync 存儲圖片 ssh containe 完成

直接上代碼。下面代碼可以上傳多個圖片,親測一次上傳九張都沒有問題,可以一次性獲取九張圖片的serverId分別用逗號隔開,但是會有一個BUG,就是wx.uploadImage只能點擊一次,當選擇圖片成功後在點擊選擇圖片後並沒有進入wx.uploadImage方法裏面,也就獲取不到serverIds了。 往下看解決方案。

document.querySelector(‘#chooseImage‘).onclick = function () {
wx.chooseImage({
count: 3,
success: function (res) {
images.localId = res.localIds;
/* alert(‘已選擇 ‘ + res.localIds.length + ‘ 張圖片‘); */
$("#faceImg").attr("src", res.localIds[0]);
$("#faceImg1").attr("src", res.localIds[1]);
$("#faceImg2").attr("src", res.localIds[2]);
wxuploadImage(res.localIds);
}
});
};

var mediaId = null;
var serverIds = null;
var i = 0;

function wxuploadImage(e) {

wx.uploadImage({
localId: e[i].toString(), // 需要上傳的圖片的本地ID,由chooseImage接口獲得
isShowProgressTips: 1, // 默認為1,顯示進度提示
success: function (res) {
// 上傳序號,上傳一張 累計 +1
i++;
//存儲圖片媒體ID,用,號分割
serverIds+=res.serverId+‘,‘;
alert(serverIds);
if(i<e.length){//本地圖片ID 還沒全部獲取完圖片媒體ID
//調用上傳遞歸函數
wxuploadImage(e);
}else{

}
//mediaId = res.serverId; // 返回圖片的服務器端ID

},
fail: function (error) {
picPath = ‘‘;
localIds = ‘‘;
alert(Json.stringify(error));

}

});
}

這樣就可以等待上一張圖片上傳完成後在上傳下一張圖片

document.querySelector(‘#chooseImage‘).onclick = function () {
wx.chooseImage({
count: 1,
sizeType: [‘compressed‘],
sourceType: [‘album‘, ‘camera‘],
success: function (res) {
images.localId = res.localIds;
/* alert(‘已選擇 ‘ + res.localIds.length + ‘ 張圖片‘); */
$("<p class=‘jiao‘></p><p class=‘pic image_container‘><img src="+res.localIds[0]+"></p>").appendTo("#faceImg");
//wxuploadImage(res.localIds);
syncUpload(res.localIds);
}
});
};

var syncUpload = function(localIds){
var localId = localIds.pop();
wx.uploadImage({
localId: localId,
isShowProgressTips: 1,
success: function (res) {
var serverId = res.serverId; // 返回圖片的服務器端ID
//其他對serverId做處理的代碼
if(localIds.length > 0){
syncUpload(localIds);
}
}
});
};

微信上傳圖片問題。