【发布时间】: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