使用 Ionic 3 将生成的 Blob 下载到 Android 设备中

Posted

技术标签:

【中文标题】使用 Ionic 3 将生成的 Blob 下载到 Android 设备中【英文标题】:Download generated Blob with Ionic 3 into Android Device 【发布时间】:2018-10-07 09:09:44 【问题描述】:

我最近在使用 Ionic3 在 android 手机上开发应用程序时遇到了这个问题。我有我提取到二维数组中的列和行数据。之后,我使用 papaparse 从二维数组创建一个 csv blob。

let csv = papa.unparse(
  fields: this.headerRow,
  data: this.csvData
);

var blob = new Blob([csv]);
var a = window.document.createElement("a");
a.href = window.URL.createObjectURL(blob);
a.download = "confidentialData.csv";
document.body.appendChild(a);
a.click();
document.body.removeChild(a);

上面的代码只适用于浏览器下载,当我将它加载到我的安卓手机时,它根本不下载。我已经阅读了许多其他关于 Ionic 应用程序如何使用 FileTransfer 和 File 将文件下载到设备中的文章。但我似乎无法解决这些问题,因为 FileTransfer.download 需要一个 url 源才能将文件下载到设备中。

但就我而言,该文件不在任何地方托管,并且该 blob 是从我的代码动态生成的。对于如何使用 Ionic 3 将 csv blob 下载到我的 android 设备中的任何帮助或建议,我将不胜感激。非常感谢。

【问题讨论】:

如果不需要下载,为什么还需要 FileTransfer.download?您能否发布更多代码,因为我不明白您要完成的工作。 我想将我的二维数组数据转换成 csv blob 或文件,然后保存或下载到我的安卓手机中。 【参考方案1】:

你弄错了。 FileTransfer 用作从 url 上传或下载(例如从您的设备上传图片到服务器或从服务器下载图片到您的设备)。

您要查看的是Cordova File,并使用createFilewriteFile函数将数据保存在设备上。

编辑:要将您的文件保存在 Documents 或 Downloads 文件夹中,您需要使用 cordova.file.externalRootDirectory + '/Download/' 才能使其正常工作,还要记住很多文件夹只是只读的(dataDirectory以 ios 为例)

希望这行得通。

【讨论】:

天啊!是的。同意你。我让它与 cordova.writeFile 函数一起工作。我通过了cordova-plugin-file#where-to-store-files github repo,但仍然无法将我的文件保存在我的android手机中的文档文件夹或下载文件夹中。有什么建议?我试过 pathFile = cordova.file.documentsDirectory;但出现错误。 嗨,你能分享一下下载blob文件的代码/函数吗?我有类似的情况,但我不确定如何实现。

以上是关于使用 Ionic 3 将生成的 Blob 下载到 Android 设备中的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 将 Blob 下载到本地存储

ionic 3 应用程序生成错误的 angular-select2 模块实现

如何从使用 Ionic 框架中的相机插件选择的视频文件 URI 创建 Blob?

[记录点滴]在Ionic和Android中上传Blob图片

从 azure blob 存储文件生成 Zip 文件

从 azure blob 存储文件生成 Zip 文件