我正在尝试下载反应本机但使用库(ReactNativeBlobUtil)的文件。对于 Android,它工作正常,但对于 IOS,文件位于文档目录中,但不在所需位置。它位于多个文件夹下,并且也无法访问。
const downloadReport = async () => {
try {
const { dirs } = ReactNativeBlobUtil.fs;
const dirToSave = LAYOUT.isiOS ? dirs.DocumentDir : dirs.LegacyDownloadDir;
const date = new Date();
const fileName = `download${Math.floor(
date.getDate() + date.getSeconds() / 2
)}.pdf`;
const config = {
fileCache: true,
addAndroidDownloads: {
useDownloadManager: true,
notification: true,
path: `${dirToSave}/${fileName}`,
description: t("downloading"),
},
addIOSDownloads: {
notification: true,
path: `${dirToSave}/${fileName}`,
description: t("downloading"),
},
};
await ReactNativeBlobUtil.config(config)
.fetch("GET", FILE_URL, {})
.then((res) => {
console.log("The file saved to ", res.path());
});
showSuccessMessage(t("fileDownloadedSuccessfully"));
} catch (error) {
showErrorMessage(t("failedToDownloadFile"));
}
};
这是我在 IOS 中获取的文件位置。
/var/mobile/容器/数据/应用程序/54A6714F-9875-4612-A0AB-EDC92FA65C15/文档/ReactNativeBlobUtil_tmp/ReactNativeBlobUtilTmp_mlp7gzc9srh232rrggpngt
当我下载 pdf 文件时,但文件扩展名不存在。保存的文件类型为data。这是不希望的。
这是我的 info.plist 文件,我在其中添加了所需的权限。
<key>UIFileSharingEnabled</key>
<true/>
<key>CFBundleGetInfoString</key>
<string></string>
<key>LSApplicationCategoryType</key>
<string></string>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key> UIFileSharingEnabled</key>
<true/>
<key>NSDownloadsFolderUsageDescription</key>
<true/>
我尝试在 info.plist 文件中添加这些权限,但没有任何效果。请给我一些如何解决这个问题的建议。
嗨,我已经自己解决了这个问题 我将文件保存在我的 IOS 设备的文档目录中,但该文件没有以 .pdf 扩展名保存在那里,所以我手动附加了文件扩展名,因为 IOS 不会自己执行此操作,所以这对我有用,我正在分享解决方案下面。
const downloadReport = async () => {
try {
const { dirs } = ReactNativeBlobUtil.fs;
const dirToSave = LAYOUT.isiOS
? dirs.DocumentDir
: dirs.LegacyDownloadDir;
const date = new Date();
const fileName = `download${Math.floor(
date.getDate() + date.getSeconds() / 2
)}.pdf`;
const config = {
fileCache: true,
addAndroidDownloads: {
useDownloadManager: true,
notification: true,
path: `${dirToSave}/${fileName}`,
description: t("downloading"),
},
path: `${dirToSave}/${fileName}`,
appendExt: "pdf",
};
await ReactNativeBlobUtil.config(config).fetch("GET", FILE_URL, {});
showSuccessMessage(t("fileDownloadedSuccessfully"));
} catch (error) {
showErrorMessage(t("failedToDownloadFile"));
}
};
这是我解决这个问题的方法
谢谢。