微信JS—SDK嵌套选择图片和上传图片接口,实现一键上传图片,遇到问题

微in_HZQ
  • 22

我们的实现如下:

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。

请问如何改进代码,实现一键上传图片。

回复
阅读 48.3k
8 个回答
✓ 已被采纳

在选择图片后,采用setTimeout(function(){
wx.uploadImage()
},0)
可以解决android设备下的问题。
此处还有一个坑,在IOS设备下,必须一个传完之后在调接口传下一个。否则连续调uploadImage后,只会上传最后一张图片

刚找到问题所在: localIds 改为 localIds.toString() 就ok了

我也在用微信js处理图片 ,不过是选择了图片后不执行success函数,已经返回成功的信息的啦。郁闷好久,没解决,顶一下楼主,祝找到解决方法

话说楼主可以选择成功吗

我觉得你可以在wx.uploadImage事件后console.log(new Date().getTime())

看一看是不是wx.uploadImage事件没有执行就把时间打印出来了

然后就是,既然是微信开发,何不用html5的formData特性呢?很方便啊

hhpp33
  • 1
新手上路,请多包涵

setTimeout(function (){ wx.uploadImage({
localId: localIds, // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: 1,// 默认为1,显示进度提示
success: function (res) {
var serverId = res.serverId; // 返回图片的服务器端ID

                            }
                        })},100);

                        把调用uploadImage放在setTimeout中延迟100ms解决

怎么你闷写个app比我写混合的还复杂..

xx92
  • 1
新手上路,请多包涵

可以看下你的微信上传的demo吗

你知道吗?

宣传栏