我正在使用React Native(0.48.3)进行Android开发。看起来,我被一个非常琐碎的任务卡住了:选择一个文件并将其内容作为字符串读取。我使用react-native-document-picker v2.0.0进行文件选择,它工作正常:我可以选择文件并获取它的URI。问题是,我无法使用此链接创建任何包来读取文件。我已经尝试过react-native-filesystem和react-native-fs,但似乎,它们只能与应用程序目录中的文件一起工作。无论如何,我得到了这样的错误:Error: File was not found: content://com.android.providers.downloads.documents/document/7
我需要使用什么包或函数?
**UPD:**使用react-native-get-real-path检索真实的路径,而不是content://
路径,可以正常工作。但这种转换真的有必要吗?可以使用content://
路径加载文件吗?
4条答案
按热度按时间cczfrluj1#
假设你正在使用
react-native-fs
,使用copyFile
可以将内容uri转换为文件uri。然后,您可以按预期使用
'file://' + destPath
wbrvyc0a2#
在react-native-fs中已经合并了pull request #395,这增加了直接从以
content://
开始的URI读取的可能性。我在这段代码中使用Android URI没有任何问题:p1iqtdky3#
在Android设备上,你需要附加“file://”来加载任何文件。你可以使用你提到的包或手动完成。如果你手动附加,react-native-fs可以用来读取URI。
ahy6op9u4#
现在是2023年,如果还有人需要帮助,你可以试试react-native-blob-util软件包
当我使用react-native-document-picker选择文件时,我遇到了这个问题。帮助我的是使用RNBU.fs.readStream()函数。我首先使用它转换到base64,然后使用react-native-fs将文件保存到我的设备目录中,使用RNFS.writeFile()函数。React Native Blob util我希望这有帮助!