如题
言简意赅的描述下问题,我是在Edge、Chorme中分别都测试了下载,均已成功,但是在firefox测试时无法弹出下载文件框,首先,排错得打着断点先确定你后端没问题哈。
这是我vue页面进行的配置,原代码为这样:
let blob = new Blob([res], {type: "application/vnd.ms-excel"}); // res就是接口返回的文件流了
let objectUrl = URL.createObjectURL(blob);
let excel = document.createElement("a");
excel.href = objectUrl;
excel.download = this.templateName + '.xlsx';
excel.click();
window.URL.revokeObjectURL(objectUrl);
先说解决后的代码:
let blob = new Blob([res], {type: "application/vnd.ms-excel"}); // res就是接口返回的文件流了
let objectUrl = URL.createObjectURL(blob);
let excel = document.createElement("a");
excel.href = objectUrl;
excel.download = this.templateName + '.xlsx';
let evt = document.createEvent('MouseEvents')
evt.initEvent('click', true, true)
excel.dispatchEvent(evt)
window.URL.revokeObjectURL(objectUrl);
其实我猜测应该是firefox不支持在js中进行click()操作?反正换成绑定事件进行事件点击就可以。具体原因也不是太清楚,稀里糊涂的就弄好了。希望能对焦头烂额的你有所帮助。
bug不可怕,可怕的是自己焦躁的心态,请诸君能沉下心从头到尾捋清楚问题出在何处~