收藏
回答

单页模式下,wx.base64ToArrayBuffer返回undefined?正常模式没有问题

export function base64src(base64data, cb) {
  const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64data) || [];
  if (!format) {
    return (new Error('ERROR_BASE64SRC_PARSE'));
  }
  const filePath = `${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME}.${format}`;

  // 这里的buffer为 undefined
  const buffer = uni.base64ToArrayBuffer(bodyData);

  console.log("buffer.byteLength===")
  console.log(buffer.byteLength)
  fsm.writeFile({
    filePath,
    data: buffer,
    encoding: 'binary',
    success() {
		console.log("单页模式保存成功==")
		console.log(filePath)
      cb(filePath);
    },
    fail(error) {
		console.log("单页模式保存报错==")
		console.log(error)
      return (new Error('ERROR_BASE64SRC_WRITE'));
    },
  });
};
回答关注问题邀请回答
收藏

1 个回答

  • 刚
    2023-04-03

    知道的,帮忙看下吧

    const buffer = wx.base64ToArrayBuffer(bodyData);
    // buffer 是undefined
    


    2023-04-03
    有用
    回复 1
    • 小熊饼干😂🤣🤩🥳
      小熊饼干😂🤣🤩🥳
      06-20
      因为 base64 字符串中只能有字符数字和 +/,其它都是非法字符,传递给 wx.base64ToArrayBuffer 之前可以先用使用正则将这些非 base64 字符移除掉,如
      const removeInvalidCharacter = (str) => {
        return str.replace(/[^A-Za-z0-9+/]/g, '');
      }
      wx.base64ToArrayBuffer(removeInvalidCharacter('-dasds_fjkhfkj'))
      06-20
      回复
登录 后发表内容