想要在img标签中存储serverId,但如图片所示,chooseImage后直接调用getLocalImgData是没问题的,在uploadImage后就会有问题,但是把getLocalImgData放在chooseImage前,serverId又获取不到,这个可以帮助解决一下嘛?
function wxChooseImage() {
var localIds = [];
wx.chooseImage({
count: 3,
success: function(res) {
localIds = res.localIds;
if ($("#imgs img").length < 3) {
syncUpload();
}else{
alert("最多只能上传3张图片");
}
}
});
function syncUpload() {
if (!localIds.length) {
alert('上传成功!');
} else {
var localId = localIds.pop();
wx.uploadImage({
localId: localId,
success: function(res) {
var serverId = res.serverId;
if ($("#imgs img").length < 3) {
wx.downloadImage({
serverId: serverId, // 需要下载的图片的服务器端ID,由uploadImage接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
var localId = res.localId; // 返回图片下载后的本地ID
wx.getLocalImgData({
localId:localId,
success: function (res){
var localData = res.localData;
console.log(localId)
if(localData.indexOf(";base64,")==-1){//兼容处理,安卓获取的图片base64码没有前缀,而苹果有,base64前缀并不固定
localData = "data:image/jpeg;base64," + localData;//加上base64前缀
}
var img = '';
if($("#imgs img").length>0){
$("#imgs").append(img);
}else{
$("#imgs").html(img);
}
}
});
}
});
syncUpload();
}else{
alert("最多只能上传3张图片");
}
}
});
}
}
}
如上代码,在手机端正常显示,但是在微信开发者工具和网页版微信就会报错,getLocalImgData: fail localId error
解决这问题了吗?