将远程映像转换为base64格式的文件

时间:2019-01-31 08:54:54

标签: react-native

我有一个位于远程(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

1 个答案:

答案 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从设备读取文件。