Javascript 下载后XLSX文件已损坏
我正试图从angular前端下载java后端生成的xlsx文件,我将该文件作为带有Content Disposition header的附件获取,并且我能够使用下面的js代码下载该文件,但当我尝试打开它时,它总是损坏的Javascript 下载后XLSX文件已损坏,javascript,angularjs,Javascript,Angularjs,我正试图从angular前端下载java后端生成的xlsx文件,我将该文件作为带有Content Disposition header的附件获取,并且我能够使用下面的js代码下载该文件,但当我尝试打开它时,它总是损坏的 var data = response; //from server var blob = new Blob([data], { type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.mai
var data = response; //from server
var blob = new Blob([data], { type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml;charset=UTF-8"});
var link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = 'filname.xlsx';
link.click();
如果我在控制台上记录服务器响应,下面是我发现的
编辑:
当我试图打开下载的文件时,请参见下图
有人能帮我吗 我对AngularJS 1.6.1也有同样的问题。当我从浏览器或
window.open(“url”)
调用我的HTTP GET服务时,xlsx文件被完美下载:304628字节。但是,AngularJS提供的response.data
有289414个字节,Blob包装有550963个字节,这是作为损坏文件下载的。如果在zip中返回xlsx,也会发生同样的行为
我通过将XMLHttpRequest.responseType
属性设置为:
$http.get(url, {responseType:'arraybuffer'});
您正在向我们显示console.log结果,但未显示调用。。。所以很难说。但看看日志,它似乎是正确的内容,你为什么说它是腐败的?@salketter我更新了这个问题。请看它是否有用。如果需要,我也可以发布API调用。好的,试着解压缩文件(将其视为.zip文件),如果它工作,这意味着它没有损坏,但生成文件时出现了问题。如果缺少XML部分,或者某些参数设置不正确,则可能会发生这种情况。此外,您可以尝试使用已知良好的文件来首先测试下载代码。。。