文章序
开发中遇到了个问题,从文件中导入数据,当有数据格式不对后端返回文件,前端需要下载,原来是excel文件,通过window.location.href = 'fileUrl'可以正常下载,但是当文件为txt格式文件,则无法下载而是浏览器直接打开,遂在寻找解决方案之后,总结一下
window.location.href
一般来讲,在js中写window.location.href = 'fileUrl'会在浏览器中打开新的标签页进行下载,如文件格式为简单文件比如txt等,则会直接打开预览,如需要下载,需要服务端设置Content-Disposition: attachment,需要依赖服务端
a标签
a标签则简单直接,代码如下
let fileUrl = res.data;
let fileNameArray = fileUrl.split('/');
let fileName = fileNameArray[fileNameArray.length - 1];
let element = document.createElement('a');
element.style.display = 'none';
element.setAttribute('href', fileUrl);
element.setAttribute('download', fileName);
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
创建一个a标签的dom元素并模拟点击,注意一定要设置download属性
网友评论