我们的实现如下:
function up_onepic() {
wx.chooseImage({
success: function (res) {
upavatar.localId = res.localIds;
if(res.localIds.length == 1) {
//alert('上传图片');
wx.uploadImage({
localId: upavatar.localId[0],
isShowProgressTips: 1,
success: function (res) {
upavatar.serverId.push(res.serverId);
var sI = upavatar.serverId;
fail: function (res) {
alert(JSON.stringify(res));
}
});
}
}
});
}
出现的问题是:选择图片的接口执行完之后,并不执行wx.uploadImage;如果在wx.uploadImage前面加上 alert('上传图片'); 语句,操作时确定之后会执行wx.uploadImage。
请问如何改进代码,实现一键上传图片。
PHP中文网2017-04-10 15:05:33
在选择图片后,采用setTimeout(function(){
wx.uploadImage()
},0)
可以解决android设备下的问题。
此处还有一个坑,在IOS设备下,必须一个传完之后在调接口传下一个。否则连续调uploadImage后,只会上传最后一张图片
PHPz2017-04-10 15:05:33
话说楼主可以选择成功吗
天蓬老师2017-04-10 15:05:33
我觉得你可以在wx.uploadImage事件后console.log(new Date().getTime())
然后就是,既然是微信开发,何不用html5的formData特性呢?很方便啊
PHP中文网2017-04-10 15:05:33
setTimeout(function (){ wx.uploadImage({
localId: localIds, // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: 1,// 默认为1,显示进度提示
success: function (res) {
var serverId = res.serverId; // 返回图片的服务器端ID
}
})},100);
把调用uploadImage放在setTimeout中延迟100ms解决