【问题标题】:Download and store file using Cordova iOS使用 Cordova iOS 下载和存储文件
【发布时间】:2021-01-21 15:39:44
【问题描述】:

我目前正在尝试在我的 Apache Cordova 应用程序上开发一个通用文件下载按钮

目前我正在使用 Cordova - download image from URL to the pictures gallery 中建议的 XMLHttpRequest 和 cordova-plugin-file,但是正如同一篇文章中所述,它不适用于 iOS。

它非常适用于 Android。但是,对于 iOS,我似乎无法将其存储在任何地方,并且在控制台中也没有出现任何错误。

我使用 cordova.file.* 尝试了几个不同的存储位置,并且我已经尝试从文件夹链接中删除 Download

据我了解,cordova.file.* 中的文件路径始终是临时的,并包含应用程序的唯一 ID,如下所示: file:///var/mobile/Containers/Data/Application/E4A79B4A-E5CB-4E0C-A7D9-0603ECD48690/tmp/cdv_photo_003.jpg

这不是我需要的,我想下载并存储文件在我的 iOS 设备中(可能在 Files 文件夹中?)

我确实尝试了一些不同的 Cordova 插件,但它们似乎都已经很老了,而且都没有用。有人有解决办法吗?

  var blob = null;
  var xhr = new XMLHttpRequest();
  xhr.open("GET", fileurl);
  xhr.responseType = "blob";
  xhr.onload = function() {
    blob = xhr.response;
    console.log(blob);
    var storageLocation = "";
    switch (device.platform) {
      case "Android":
        storageLocation = 'file:///storage/emulated/0/';
        break;
      case "iOS":
        storageLocation = cordova.file.documentsDirectory;
        break;
    }
    var folderpath = storageLocation + "Download";
    var DataBlob = blob;
    window.resolveLocalFileSystemURL(folderpath, function(dir) {
      dir.getFile(filename, {
        create: true
      }, function(file) {
        file.createWriter(function(fileWriter) {
          fileWriter.write(DataBlob);
        }, function(err) {
          console.log(err);
        });
      });
    });
  }
  xhr.send();

【问题讨论】:

    标签: javascript ios cordova xmlhttprequest cordova-plugins


    【解决方案1】:

    我也有同样的问题。它在 xcode 模拟器和连接到 mac 的 iphone 上运行良好,构建为调试和发布,但是当我将应用程序部署到 TestFlight 并将其安装在同一个 iphone 上时,通过 https 下载的文件不起作用。我认为这与 CORS(跨域资源共享)和 Cordova 重定向到本地 blob 文件有关,但不能确定。

    这一切都始于 Apple 的 UIWebView 弃用警告,该警告在我升级到 WKWebView (cordova-ios@6.2.0) 的过程中消失了,这提高了浏览器的安全性。

    【讨论】:

    • 对我来说,该应用似乎无法在其目录之外写入文件。我的解决方法是安装 FileOpener2 插件,它允许在应用程序之外打开文件,以便用户可以自己存储文件。 github.com/pwlin/cordova-plugin-file-opener2希望这也适用于你。
    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 2021-12-26
    相关资源
    最近更新 更多