【问题标题】:How to get real Directory Path on iOS in React Native如何在 React Native 中获取 iOS 上的真实目录路径
【发布时间】:2021-12-01 18:15:17
【问题描述】:

我想在 React Native 中下载一个文件并将其保存在用户选择的目录中(例如下载)。

现在我使用https://www.npmjs.com/package/react-native-document-picker 让用户选择一个目录并使用https://www.npmjs.com/package/react-native-fs/v/1.2.0 下载文件。

不幸的是,react-native-document-picker 只给了我一个目录的动态 URI,当 react-native-fs 尝试访问它时它不存在。我认为它隐藏在 File-Provider 之类的东西后面。

我进行了很多搜索,但没有找到有关如何获取目录的真实静态路径的解决方案。可能是我遗漏了一些明显的东西,但我现在无法弄清楚。

代码(简化)

DocumentPicker.pickDirectory().then(pick => {

  // this looks something like:
  // file:///private/var/mobile/Containers/Shared/AppGroup/8443...EC/File%20Provider%20Storage/Downloads/
  const pickedDirectory = pick.uri;

  // resolves to false:
  RNFS.exists(pickedDirectory)

  // does not work
  RNFS.downloadFile({
    fromUrl: downloadUrl,
    toFile: pickedDirectory + filename,
  }).promise.then(r => { console.log(r)
});

【问题讨论】:

  • pickedDirectory 中还有什么内容?我相信还有更多。
  • pickedDirectory 只是一个带有 uri {uri: string} 的对象而已
  • 对象在模拟器上看起来像这样,但我也在设备上测试过 {"uri": "file:///Users/username/Library/Developer/CoreSimulator/Devices/4397173C-E2B4-4E1A-9FAE-980CAD057627/data/Containers/Shared/AppGroup/CA2871AF-D874-4960-AECE-8BE0B9B0861D/File%20Provider%20Storage/Downloads/"}

标签: javascript react-native react-native-fs


【解决方案1】:

我们可以选择以下链接上的解决方案(使用react-native-fs)。

React native Unable to use local tmp file path for Image.source iOS

或者试试

在选择文档选项中添加copyTo:"documentDirectory" 。然后在pickedDirectory.fileCopyUri 你会得到文档路径。

当我们从画廊或 iOS 文件系统中选择任何项目时,它会选择并将其放置在临时目录中一段时间​​,然后自动从该目录中删除。试试上面给出的解决方案,我相信它会起作用的。

【讨论】:

  • pickDirectory 很遗憾不接受此选项。它接受的唯一选项是选择器视图的呈现方式
  • 你试过pick() 吗?我认为这也可以满足您的目的。我会在本地尝试并分享更具体的答案。
  • 我试过挑选。问题是,我想选择一个目录(文件下载到其中)而不是文件。我试过 pik({type: "public.folder"}) 但这没有编译。谢谢你的帮助!
  • 然后试试react-native-fs,你肯定会搞定的。
  • stackoverflow.com/questions/50755784/… 这里是你的解决方案@DeepValue
猜你喜欢
  • 2021-03-21
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
相关资源
最近更新 更多