如何在React Native中将字符串转换为base64?

4
我正在寻找一种在React Native中将字符串转换为Base64的方法,例如btoa()。
但是btoa()只有在开发者工具打开时才会起作用。
谢谢, Eranbo
4个回答

3

btoa()函数只在开发者工具打开时才有效。

这是因为在调试模式和非调试模式下,代码会在不同的JavaScript引擎(V8和coreJS)中运行。我猜想(如果btoa()真的无效的话),则coreJS没有实现btoa函数。

可以使用第三方库完成转换。例如,npm:js-base64


谢谢@kirill,最终我还是自己写了一个编码解码服务类。 - Erab BO
也许我会将它上传到npm。 - Erab BO

0

rn-fetch-blob 允许您在本地代码中进行转换:

export const blobToBase64 = async (data, encoding = 'base64') => fs.readFile(data, encoding);

是的,但我的包要简单得多,不需要在React Native CLI上运行链接命令,最重要的是它很小,只有一个文件,易于理解、更改和使用。 - Erab BO

-1
你可以用原生JS来实现,像下面这样:
export const UriToBase64 = blob => {
  return new Promise((resolve, reject) => {
    if (window.FileReader) {
      const reader = new window.FileReader();
      if (blob && blob.type.match('image.*')) {
        reader.readAsDataURL(blob);
        reader.onerror = reject;
      } else {
        reject(new Error('Bad type, must be image'));
      }
      reader.onloadend = () => resolve(reader.result);
    } else {
      reject(new Error('No FileReader on window'));
    }
  });
};

export default {
  UriToBase64,
};

你好,Alex Levy, 在React-Native中没有窗口。 - Erab BO
抱歉,这是因为我使用了React Native Web。 - Alex Lévy

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接