如何解决使用Cordova iOS下载和存储文件
我目前正在尝试在 Apache Cordova应用上开发一个通用文件下载按钮。
目前,我正在按照Cordova - download image from URL to the pictures gallery中的建议使用 XMLHttpRequest和cordova-plugin-file ,但是正如同一篇文章中所述,它不适用于iOS。
它非常适合Android。但是,对于iOS,看来我无法将其存储在任何地方,并且在控制台中也没有任何错误。
我尝试使用 cordova.file *在几个不同的存储位置。我已经尝试从文件夹链接中删除下载。
据我了解, cordova.file *中的文件路径始终是临时的,并包含应用程序的唯一ID,如下所示:
file:///var/mobile/Containers/Data/Application/E4A79B4A-E5CB-4E0C-A7D9-0603ECD48690/tmp/cdv_photo_003.jpg
那不是我所需要的,我想下载并存储文件到我的iOS设备中(也许在“文件”文件夹中?)
我确实尝试了一些不同的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();
解决方法
我遇到了同样的问题。它在 xcode 模拟器和连接到 mac 的 iphone 上运行良好,构建为调试和发布,但是当我将应用程序部署到 TestFlight 并将其安装在同一台 iphone 上时,通过 https 下载的文件不起作用。我认为这与 CORS(跨源资源共享)和 Cordova 重定向到本地 blob 文件有关,但不能确定。
这一切都始于 Apple 的 UIWebView 弃用警告,该警告在我升级到 WKWebView (cordova-ios@6.2.0) 后消失了,这提高了浏览器的安全性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。