我有一个位于远程(http://myimage.com/image.jpg)的图像。我想将图像转换为base64格式。
这就是我所做的:
fileToBase64 = async (uri) => {
console.log("processing file to base64");
this.setState({ errorFoto: [false, 'lightgrey'] })
const base64 = await FileSystem.readAsStringAsync(
uri,
{
encoding: FileSystem.EncodingTypes.Base64,
});
let temp = this.state.fileBase64Upload;
temp.push(base64);
this.setState(
{
fileBase64Upload: temp,
fileBase64: base64,
}, () => { console.log('completedprocessing'); console.log('panjangnyafile64base', this.state.fileBase64Upload.length) }
);
}
但是我的代码错误:
位置“ http://myimage.com/image.jpg”不可读。 -node_modules / react-native / Libraries / BatchedBridge / NativeModules.js:95:55在 -__invokeCallback中的node_modules / react-native / Libraries / BatchedBridge / MessageQueue.js:397:4
答案 0 :(得分:1)
这是因为readAsStringAsync
用于访问存储在设备上的文件,因此您正在尝试访问未存储在设备上的文件。 https://docs.expo.io/versions/latest/sdk/filesystem/#filesystemreadasstringasyncfileuri-options
您将必须使用downloadAsync
下载它
https://docs.expo.io/versions/latest/sdk/filesystem/#filesystemdownloadasyncuri-fileuri-options
下载文件后,您应该可以使用readAsStringAsync
从设备读取文件。