我有以下代码(改编自this tutorial),用于从后端保存文件:
import { FilesystemDirectory, Plugins } from '@capacitor/core';
const { Filesystem } = Plugins;
await Filesystem.writeFile({
path: "filename.txt",
data: "base64 data",
directory: FilesystemDirectory.Documents,
});
这段代码在Android上运行良好,甚至在内部存储的根目录下创建了Documents
目录。不幸的是,在iOS上没有文件被创建,无论我使用什么目录(我已经用Documents
、Data
和ExternalStorage
进行了测试)当我把这个代码块放入try..catch
中时,没有抛出任何东西,所以操作应该成功完成了。只是没有文件保存。在一台Android设备和两台iOS上测试。
2条答案
按热度按时间ryevplcw1#
iOS不允许直接访问文件存储,我让它在Ionic-native的FileOpener上工作,如下所示:
它会打开一个对话框,你可以选择保存文件的位置。这有点混乱,因为该功能的描述是“使用系统模式打开已安装的应用程序打开文件”,但保存也可以使用它。
你还需要安装cordova-plugin-file-opener 2,并将ionic FileOpener放到app. module. ts中的提供商处。如果你不使用Cordova,你也不需要进行Cordova设置,它可以作为一个单独的插件与Capacitor一起工作。据我所知,Capacitor不提供在iOS中下载的解决方案。
jhiyze9q2#
我遇到过同样的问题(只有capacitor 4.2.0),通过在我的Info.plist中添加以下权限解决了这个问题:
在此之后,使用目录
Directory.Documents
使我在Files应用程序下看到了一个带有应用程序名称的Documents目录。希望有帮助。