【问题标题】:Save file to public directory in iOS using cordova使用cordova将文件保存到iOS中的公共目录
【发布时间】:2016-08-12 15:31:50
【问题描述】:

我有一个 cordova 应用程序,它从 Internet 下载 pdf 文件并使用 cordova-plugin-file 和 cordova-plugin-file-transfer 将其保存到本地文件系统。在下一步中,我想使用指定 mimetype 的默认应用程序打开文件。我为此使用了 cordova-plugin-file-opener2 插件。选择的第 3 方应用程序需要读取保存文件的目录才能打开文件。在 android 上有几个可公开访问的文件系统目录,我让它正常工作。但是我找不到在 iOS 的情况下需要保存文件的正确目录,以使其可用于所选的默认 3rd 方应用程序。

cordova-plugin-file 在其文档中说,所有在 RW 模式下可用于 cordova 应用程序的目录都是私有的:https://github.com/apache/cordova-plugin-file#file-system-layouts

但是它是怎么来的呢?默认情况下,基于 mimetype 的第 3 方应用程序打开文件的概念在每个操作系统中都是标准的。任何帮助,将不胜感激。

【问题讨论】:

标签: ios cordova ionic-framework


【解决方案1】:

iOS 没有可公开访问的文件系统目录。
一种方法 - 通过 UIActivityViewController 使用共享。

【讨论】:

  • 感谢您的回复。我的首要任务是找到现有的科尔多瓦解决方案。使用 UIActivityViewController 编写我自己的插件或桥以使其工作对我来说确实是最后可能的方法。
  • 我只是想帮忙,iOS 中没有公开文件夹。
  • Igor,你知道如何在 IOS 中为最终用户公开一些文件吗?
【解决方案2】:

我在 IOS 中使用 cordova-plugin-file-opener2 插件。我将文件保存在 cordova.file.cacheDirectory 中,当我将 zip 文件保存到该位置时,这对我来说很好。我首先必须安装一个 zip 文件管理器来处理 mimeType = application/zip。我使用的 zip 文件管理器是“Zip Viewer”的免费版本,看起来不错,但有一些广告。

要让它在 Android 上运行,我必须将文件保存在 cordova.file.externalRootDirectory 当我使用cordova.file.cacheDirectory for Android 时它默默地失败了。您不能将 cordova.file.externalRootDirectory 用于 IOS,因为根据 Cordova File Plugin 文档,它没有为 IOS 定义。

这是保存文件时调用的代码sn-p:

var fileName = "myfile.zip";
//for IOS
var filePath = cordova.file.cacheDirectory+"/Download/"+fileName;
//for Android
//var filePath = cordova.file.externalRootDirectory+"/Download/"+fileName;

var mimeType = "application/zip";
cordova.plugins.fileOpener2.open(
    filePath,
    mimeType,
    {error : function(){
                   my.alert("ERROR opening with cordova.plugins.fileOpener2");
             },
     success : function(){
                   my.log("SUCCESS opening zip file");
               }
     });

【讨论】:

    猜你喜欢
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 2015-12-05
    相关资源
    最近更新 更多