【发布时间】: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