【问题标题】:How to save file with Capacitor on iOS?如何在 iOS 上使用 Capacitor 保存文件?
【发布时间】:2021-04-09 10:44:44
【问题描述】:

我有以下代码(改编自 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-framework capacitor ionic5


    【解决方案1】:

    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')
    

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

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

    【讨论】:

    • 部分ios应用显示下载媒体对话框,部分应用如何实现?苹果会为企业公司提供特殊的api吗?
    猜你喜欢
    • 2019-10-31
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 2011-07-16
    相关资源
    最近更新 更多