赞
踩
使用js动态创建a标签
function download() {
var a = document.createElement('a');
var url = '';
var filename = 'data.xlsx';
a.href=url;
a.download = filename;
a.click()
}
或者直接写a标签
<a href='url'></a>
后台服务器有静态资源且是固定的文件名(GET方式下载文件)
window.location.href=url
使用FileReader 读取流文件 会受到chrome浏览器的文件传输的大小限制;
当文件流达到2M时 chrome 直接提示下载失败-网络错误
var url='' var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); // 也可以使用POST方式,根据接口 xhr.responseType = "blob"; xhr.onload = function () { if (this.status === 200) { var blob = this.response; let temp = xhr.getResponseHeader("content-disposition").split(";")[1].split("filename=")[1]; var fileName = decodeURIComponent(temp); var reader = new FileReader(); reader.readAsDataURL(blob); reader.onload = function (e) { var a = document.createElement('a'); a.download = fileName; a.href = e.target.result; $("body").append(a); a.click(); $(a).remove(); } } }; // 发送ajax请求 xhr.setRequestHeader('Authorization', getCookie("token8989")); xhr.send()
使用URL.createObjectURL 方法导出 不受chrome浏览器文件传输限制
var url='' var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); // 也可以使用POST方式,根据接口 xhr.responseType = "blob"; // 返回类型blob xhr.onload = function () { if (this.status === 200) { var blob = this.response; let temp = xhr.getResponseHeader("content-disposition").split(";")[1].split("filename=")[1]; var fileName = decodeURIComponent(temp); const objectURL = URL.createObjectURL(new Blob([blob], { type: 'text/xls' })) // chrome不受文件你大小限制导出文件 var a = document.createElement('a'); a.download = fileName; a.href = objectURL; $("body").append(a);// 修复firefox中无法触发click a.click(); $(a).remove(); } }; // 发送ajax请求 xhr.setRequestHeader('Authorization', getCookie("token8989")); xhr.send()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。