我正在寻找一种方法将字符串转换为反应原生的Base64,例如btoa()。
btoa()仅在开发人员工具处于打开状态时才有效。
谢谢, Eranbo
答案 0 :(得分:2)
btoa()仅在开发人员工具打开时才有效
这是因为在调试模式下没有代码工作在不同的js引擎(V8和coreJS)。我猜(如果它真的不起作用),coreJS没有btoa
实现。
使用第三方库。例如npm:js-base64。
答案 1 :(得分:0)
正如我在上面的评论中提到的,我最终编写了自己的base64编码器解码器。
我已将其上传到npm,欢迎大家使用它。
https://www.npmjs.com/package/react-native-base64
享受,
eranbo
答案 2 :(得分:0)
rn-fetch-blob允许您使用本机代码进行转换:
export const blobToBase64 = async (data, encoding = 'base64') => fs.readFile(data, encoding);
答案 3 :(得分:-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,
};