下载后损坏XLSX文件

时间:2017-08-09 09:02:07

标签: javascript angularjs

我正在尝试从角度前端下载java后端生成的xlsx文件,我将文件作为Content-Disposition标头的附件,我可以使用以下js下载文件代码,但是当我尝试打开它时,它总是被破坏

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();

如果我控制台记录服务器响应,这是我找到的

enter image description here

修改

当我尝试打开下载的文件时,请参见下图 enter image description here enter image description here

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:4)

我在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'});