如何用Javascript从Chrome iOS下载blob文件
我正在从iOS下载文件(pdf,excel,txt,png)。iOS没有文件系统,这对下载来说是个问题。我创建了一个代码,根据操作系统和导航器(如果需要)下载blob文件。它在桌面(Chrome和IE的最新版本)、移动安卓(Chrome,原生导航器)和iOS iPad2(Safari)上运行良好。
现在,Chrome iOS应该像Safari手机一样,但算法不起作用,Chrome iOS通过在新选项卡中打开来下载文件,但页面是空的。
我创建了自己的blob来创建downloadUrl。
这是下载功能的一部分。
var URL = window.URL || window.webkitURL;
var downloadUrl = URL.createObjectURL(iobBLOB);
var newWindow = null;
if (typeof a.download === 'undefined') {
var newWindow = null;
newWindow = window.open(downloadUrl, '_blank');
setTimeout(function() {
newWindow.document.title = isbFilename;
}, 10);
}
更多详细信息
在iPad2和iPhone4 上调试
正在尝试下载excell、pdf、txt和Png文件。
设备没有文件系统。
谢谢你的帮助…如果你需要更多信息,请告诉我,这是我的第一个问题
经过搜索,该解决方案似乎在ChromeiOS和Safari上运行良好。我在这篇关于如何在Chrome iOS上打开Blob URL的帖子中找到了它。这解决了我的问题:
//isbContentType i.e. 'text/plain'
//isbFilename i.e. 'This is a title'
var reader = new FileReader();
reader.onload = function(e) {
var bdata = btoa(reader.result);
var datauri = 'data:' + isbContentType + ';base64,' + bdata;
window.open(datauri);
newWindow = setTimeout(function() {
newWindow.document.title = isbFilename;
}, 10);
};
reader.readAsBinaryString(iobBLOB);
我相信有办法下载blob文件,但事实并非如此。无论如何都要感谢
var reader = new FileReader();
var out = new Blob([response.data], { type: 'application/pdf' });
reader.onload = function(e) {
window.location.href = reader.result;
}
reader.readAsDataURL(out);
// var blob = new Blob([response.data], { type: "application/pdf" });
var fileURL = URL.createObjectURL(out);
var a = document.createElement('a');
a.href = fileURL;
a.target = '_blank';
a.download = 'lkn_' + id + '.pdf';
document.body.appendChild(a);
a.click();
我们有一个wordpress网站,在回调下载csv文件时,我们必须添加以下内容以进行ipad/pod/phone特定下载;
if(stristr($_SERVER['HTTP_USER_AGENT'], 'ipad') OR stristr($_SERVER['HTTP_USER_AGENT'], 'iphone') OR stristr($_SERVER['HTTP_USER_AGENT'], 'ipod')) {
header("Content-Type: application/octet-stream");
} else {
header('Content-Type: application/vnd.ms-excel');
}