微信多图上传问题

JS-SDK: http://res.wx.qq.com/open/js/...
问题描述:选择多张图片上传后,只上传成功第一张图片,第二次调用wx.uploadImage无响应
微信版本:6.6.5
设备平台:Android
设备系统:Android 8.0.0
设备型号:华为V9,OppoR9等大部分安卓设备

近期出现,以下代码已成功运行一年有余,上传了成T的图片,并未出现此类问题

代码

    let that = this;
    wx.chooseImage({
      count: 9, // 默认9
      sizeType: ["original"], // 可以指定是原图还是压缩图,默认二者都有
      sourceType: ["album"],
      success: function(res) {
        console.log(res);
        that.wxUploadImage(res.localIds, callback);
      },
      cancel: function() {},
      fail: function(res) {
        // Toast("chooseImage error!");
      }
    });
  wxUploadImage(localImagesIds, callback) {
    let _self = this;
    if (localImagesIds.length == 0) {
      return;
    }
    let localId = localImagesIds[0];
    wx.uploadImage({//第二次调用该方法无任何响应
      localId: localId,
      isShowProgressTips: 1,
      success: function(res) {
        let obj = {};
        obj.localId = localId;
        obj.mediaId = res.serverId;
        localImagesIds.shift();
        _self.wxUploadImage(localImagesIds, callback);
        callback(obj);
      },
      fail: function(res) {//注:调试时,此方法并未触发
        alert(res);
        //一张上传微信服务器失败,则跳过直接上传下一张
        localImagesIds.shift();
        _self.wxUploadImage(localImagesIds, callback);
      }
    });
  },

请问有人遇到此类问题吗,如何解决呢,谢谢!?

补充:只针对微信默认图库,调用Camera图库则没有该问题,奇怪的很

阅读 1.7k
1 个回答

表情~~
自问自答了,希望给遇到此类问题的同学一个参考


选择图片

wx.chooseImage({
  count: 9, // 默认9
  sizeType: ["original"], // 可以指定是原图还是压缩图,默认二者都有
  sourceType: ["album"],
  success: function(res) {
    console.log(res);
    that.wxUploadImage(res.localIds, callback);
  },
  cancel: function() {},
  fail: function(res) {
    // Toast("chooseImage error!");
  }
});

上传图片

waitUploading(localId) {
    return new Promise((resolve, reject) => {
      setTimeout(() => {//重点:加一个100ms的延迟
        wx.uploadImage({
          localId: localId,
          success: function(res) {
            resolve(res);
          },
          fail: function(res) {
            reject(res);
          }
        });
      }, 100);
    });
  },
 wxUploadImage(localImagesIds, callback) {
    console.log(localImagesIds.length);
    if (localImagesIds.length == 0) {
      console.log("上传完毕");
      return;
    }
    let localId = localImagesIds[0];
    this.waitUploading(localId)
      .then(res => {
        localImagesIds.shift();
        console.log(`还剩${localImagesIds.length}`);
        this.wxUploadImage(localImagesIds, callback);
        //TODO somthing else
      })
      .catch(error => {
        alert(res);
        localImagesIds.shift();
        this.wxUploadImage(localImagesIds, callback);
      });
  },
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题