微信上傳圖片問題。

 

直接上代碼。下面代碼能夠上傳多個圖片,親測一次上傳九張都沒有問題,能夠一次性獲取九張圖片的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);
}
});
};app

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)); server

} 遞歸

});
}接口

 

 

 

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

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);
}
});
};ip

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);
}
}
});
};string

相關文章
相關標籤/搜索