我正在尝试从角度前端下载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();
如果我控制台记录服务器响应,这是我找到的
修改
有人可以帮我这个吗?
答案 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'});