收藏
回答

wx.getlocalimgdata 怎么循环转base64,单图片上传可以,多张图片就不可以?

jweixin.chooseImage({

count: checkNumber, // 默认9

sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有

sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有

success: function(res) {

let count = checkNumber <= res.localIds.length ? checkNumber : res.localIds.length

for (let i = 0; i < count; i++) {

jweixin.getLocalImgData({

localId: res.localIds[i], // 图片的localID

success: function(res) {

const localData = res.localData;

let imageBase64 = '';

if (localData.indexOf('data:image') == 0) {

//苹果的直接赋值,默认生成'data:image/jpeg;base64,'的头部拼接

imageBase64 = localData;

} else {

//此处是安卓中的唯一得坑!在拼接前需要对localData进行换行符的全局替换

//此时一个正常的base64图片路径就完美生成赋值到img的src中了

imageBase64 = 'data:image/jpeg;base64,' + localData.replace(/\n/g, '');

}

var blobUrl = window.URL.createObjectURL(_this.dataURLtoBlob(imageBase64));

_this.$myUploadFile({

header: {},

filePath: blobUrl

}).then(function(response) {

_this.addProperties(response.imgs[0])

})

}

});

}

}

});

回答关注问题邀请回答
收藏

2 个回答

  • 微信小店技术专员-binnie
    微信小店技术专员-binnie
    2021-06-09

    看起来是该时机没有这个函数,检查下代码是不是时序有问题。

    2021-06-09
    有用 1
    回复
  • 阮洋
    阮洋
    2021-09-08

    一个递归就解决了

      private getImgBase64(wxLocalIds: string[], index: number) {
        if (index >= wxLocalIds.length) {
          return;
        }
        const that = this;
        wx.getLocalImgData({
          localId: wxLocalIds[index],
          success(res: any) {
            that.localIds.push(res.localData);
            const tmp = index + 1;
            that.getImgBase64(wxLocalIds, tmp);
          },
        });
      }
    
    2021-09-08
    有用
    回复
登录 后发表内容