下载后损坏的XLSX文件

iLa*_* ツ 0 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();
Run Code Online (Sandbox Code Playgroud)

如果我通过控制台记录服务器响应,这就是我发现的内容

在此处输入图片说明

编辑:

当我尝试打开下载的文件时,请参见下图 在此处输入图片说明 在此处输入图片说明

有人可以帮我吗?

小智 5

我在AngularJS 1.6.1中遇到了同样的问题。当我从浏览器或从中调用HTTP GET服务时window.open("url"),xlsx文件已完美下载:304628字节。但是,response.dataAngularJS提供的提供的内容为289414字节,而Blob包装器的内容为550963字节,这是作为损坏文件下载的。如果我以zip格式返回xlsx,则会发生相同的行为。

我通过将XMLHttpRequest.responseType属性设置为这样来解决此问题:

$http.get(url, {responseType:'arraybuffer'});
Run Code Online (Sandbox Code Playgroud)

  • 你真的救了我!我在 React 中使用 Axios。非常感谢你的提示! (2认同)