世博文件不可读

BaH*_*Jr. 6 react-native expo

我正在尝试使用 expo FileSystem api 读取此记录文件的内容。

这是代码:

Expo.FileSystem.readAsStringAsync((Platform.OS==='android'?'file://':'')+sound.status.uri).then(str => {
  console.log(str)
})
Run Code Online (Sandbox Code Playgroud)

我收到此错误,当我尝试使用任何 FileSystem 方法移动它时,它会引发相同的错误。

在此处输入图片说明

Ali*_*oul 0

我在从文档选择器读取 pdf 时遇到了类似的问题。

花费大量时间尝试寻找解决方案。没有任何效果。我什至构建了应用程序,但没有任何改变。

因此,我没有使用文件系统,而是使用文件读取器:

const convertToBase64 = async (uri) => {
    try {
      const response = await fetch(uri);
      const blob = await response.blob();
      const reader = new FileReader();

      reader.onloadend = () => {
        setBase64Data(reader.result);
      };

      reader.readAsDataURL(blob);
    } catch (error) {
      console.error("Error converting to base64:", error);
      Alert.alert("Error converting to base64");
    }
  };
Run Code Online (Sandbox Code Playgroud)

这非常适合阅读 PDF,并且也适用于所有其他文件类型;但是,请记住,如果您的文件太大 (> 3MB),则 base64 可能太大,导致您的应用程序崩溃。

您可能还需要将 Whatwg-fetch 降级到 3.6。