无法读取 react-native >0.59 中的文件内容
Posted
技术标签:
【中文标题】无法读取 react-native >0.59 中的文件内容【英文标题】:Unable to read file contents in react-native >0.59 【发布时间】:2021-01-25 09:34:16 【问题描述】:我想在我的 react native 应用程序中上传文档,为此我正在使用react-native-document-picker
但是要读取文件react-native-fs 的base64 内容,需要有依赖问题(需要react-native v0.59)
我无法安装它,因为我有 react-native v 0.63
安装时出现以下错误:
admin@Salvis-MacBook project % npm install react-native-fs --save
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: project@0.0.1
npm ERR! Found: react-native@0.63.0
npm ERR! node_modules/react-native
npm ERR! react-native@"0.63.0" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer react-native@"^0.59.5" from react-native-fs@2.16.6
npm ERR! node_modules/react-native-fs
npm ERR! react-native-fs@"*" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR! See /Users/admin/.npm/eresolve-report.txt for a full report.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/admin/.npm/_logs/2021-01-25T09_41_08_842Z-debug.log
如果您遇到同样的问题,请提出建议。
我尝试使用 rn-fetch-blob 读取内容,它在 android 上运行良好,但我无法在 ios 模拟器中读取文件(我从 safari 下载了一些示例 pdf 文件)
每当我尝试读取文件时,它都会显示找不到文件。
我也试过以下方法:
uri.replace('file://', '')
uri.replace('file:', '')
decodeURIComponent(uri)
但还是无法在ios上阅读
【问题讨论】:
您能告诉我们您在安装它时遇到的错误类型吗? 我已编辑问题以包含错误 @KishanBharda 你有什么解决办法吗? 我有,但它可能不是完美的解决方案。尝试通过运行npm install react-native-fs --save --legacy-peer-deps
命令进行安装。这可能不是安全的方法,但可以解决解决方案。库 git 存储库上打开了一个问题。 check this
【参考方案1】:
好像 react-native-fs 有问题(有一个未解决的问题:check here)
所以我找到了读取文件内容(base64)的替代解决方案。
只需使用rn-fetch-blob 的readFile()
函数即可。
在您需要传递 base64 字符串的函数中,只需执行以下操作:
const fs = RNFetchBlob.fs;
let Base64String = await fs.readFile(yourFileObject.uri, 'base64');
yourFileObject
是你通过 react-native-document-picker 选择任何文件时得到的对象
您可以使用您选择的任何选择器,只需在 readFile()
函数中传递文件 uri(本地路径)即可开始滚动。
【讨论】:
像这样将它作为 blob 获取会占用更多内存吗? 我没有发现任何与内存使用有关的问题@kojow7以上是关于无法读取 react-native >0.59 中的文件内容的主要内容,如果未能解决你的问题,请参考以下文章
Redux 和 React-Native:无法读取未定义的属性“类型”
尝试执行 react-native 应用程序时出现“错误无法读取未定义的属性‘拆分’”
无法读取未定义的 React-Native Firebase React-native-fetch-blob 的属性“DocumentDir”