如何使用 Capacitor on iOS 保存文件?

How to save file with Capacitor on iOS?

我有以下代码(改编自 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 上没有创建文件,无论我使用什么目录(我已经用 DocumentsDataExternalStorage 测试过)。 当我将此代码块放入 try..catch 时,不会抛出任何内容,因此操作应该已成功完成,只是没有保存文件。在一台 Android 设备和两台 iOS.

设备上测试

iOS 不允许直接访问文件存储。我让它与 Ionic-native 的 FileOpener 一起工作,如下所示:

import { FileOpener } from '@ionic-native/file-opener/ngx';
import { FilesystemDirectory, Plugins } from '@capacitor/core';
const { Filesystem } = Plugins;

const result = await Filesystem.writeFile({
    path: "filename.txt",
    data: "base64 data",
    directory: FilesystemDirectory.Documents,
  });
this.fileOpener.showOpenWithDialog(result.uri, 'application/json')

它会打开一个对话框,您可以在其中 select 保存文件的位置。这有点令人困惑,因为该功能的描述是“使用系统模式打开以使用已安装的应用程序打开文件”,但保存也适用于它。

您还需要安装 cordova-plugin-file-opener2 并将 ionic FileOpener 放入 app.module.ts 中的提供程序。如果您不以其他方式使用 Cordova,则无需进行 Cordova 设置,它与 Capacitor 一起作为单独的插件工作。据我所知,Capacitor 没有提供下载 iOS.

的解决方案