我正在寻找一种在React Native中将字符串转换为Base64的方法,例如btoa()。
但是btoa()只有在开发者工具打开时才会起作用。
谢谢, Eranbo
但是btoa()只有在开发者工具打开时才会起作用。
谢谢, Eranbo
btoa()函数只在开发者工具打开时才有效。
这是因为在调试模式和非调试模式下,代码会在不同的JavaScript引擎(V8和coreJS)中运行。我猜想(如果btoa()真的无效的话),则coreJS没有实现btoa
函数。
可以使用第三方库完成转换。例如,npm:js-base64。
rn-fetch-blob 允许您在本地代码中进行转换:
export const blobToBase64 = async (data, encoding = 'base64') => fs.readFile(data, encoding);
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,
};
正如我在上面的评论中提到的,我最终自己编写了base64编码器解码器。
我已经将其上传到npm,欢迎大家使用。
https://www.npmjs.com/package/react-native-base64
祝愉快,
eranbo