ios - 使用 React Native 在 iOS 中获取本地文件

标签 ios firebase react-native

我正在尝试获取保存在本地 中的音频文件并使用 firebase 上传。我试过使用 react-native-fetch-blob 如下:

从“react-native-fetch-blob”导入 RNFetchBlob

const fs = RNFetchBlob.fs

但是我得到了错误:

错误:文件不存在

即使我使用相同的路径,我也会在存储文件后返回。所以我有:

console.log('Full path is ' + fullPath)//Gives/var/mobile/Containers/Data/Application/2446[...]E1A9/Documents/myfile.mp4

但是当我尝试的时候我

fs.readFile(RNFetchBlob.wrap(fullPath), 'base64').then((data) => ...

我收到“文件不存在”错误。

有人有读取(二进制)文件作为 blob 并使用它的示例代码,尤其是上传到 firebase 存储吗?我发现的所有示例都是从外部 URL 抓取文件。

最佳答案

在iOS平台上,每次访问文件系统时目录路径都会改变。所以如果你需要在 iOS 上读取文件,你需要先获取 dir 路径并用它连接文件名。

// fileUri is a string like "file:///var/mobile/Containers/Data/Application/9B754FAA-2588-4FEC-B0F7-6D890B7B4681/Documents/filename"
if (Platform.OS === 'ios') {
  let arr = fileUri.split('/')
  const dirs = RNFetchBlob.fs.dirs
  filePath = `${dirs.DocumentDir}/${arr[arr.length - 1]}`
} else {
  filePath = audioDataUri
}

关于ios - 使用 React Native 在 iOS 中获取本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43922898/

相关文章:

ios - xcode swift AnyObject 到 Swift 转换

ios - Swift - Firebase - 订单集合

ios - Xcode 9.2 使用 Firebase 生成警告

android - 如何将 firebase 数据加载到 recyclerview

android - 如何在 React Native 中同时设置 testID 和 accessibilityLabel?

ios - 如何在 Objective-C 中确定相同的 NSString?

ios - 何时调用 monitoringDidFailForRegion 方法?

firebase - 防止从 firebase 数据库中删除现有数据

javascript - 地理围栏并发送推送通知

react-native - 路由 "Feed"的组件必须是 React 组件