如何使用 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 上没有创建文件,无论我使用什么目录(我已经用 Documents
、Data
和 ExternalStorage
测试过)。
当我将此代码块放入 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.
的解决方案
我有以下代码(改编自 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.
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.
的解决方案