我从spring controllr返回了我的excel文件。但文件没有转换。
控制器:-
Workbook wb = services.downloadExcel(id);
response.setHeader("Content-disposition", "attachment;
filename=test.xls");
wb.write(response.getOutputStream());
response.flushBuffer();
return wb;
Ajax:-
$.ajax({
type: "GET",
url: "/screener/" + projectId,
success: function (result) {
console.log(result)
alert("sfa");
var blob = new Blob([result], { type: 'application/vnd.ms-
excel' });
var downloadUrl = URL.createObjectURL(blob);
var a = document.createElement("a");
a.href = downloadUrl;
a.download = "downloadFile.xls";
document.body.appendChild(a);
a.click();
}
});
答案 0 :(得分:2)
您使用的方法仅适用于纯文本文件,xls不是纯文本,因此您需要将其作为二进制数据检索。
如果您使用的是jQuery 3+,则可以将请求的responseType设置为“ blob”,然后使用该blob创建要下载的blob网址。
jQuery 3 +
$.ajax({
type: "GET",
url: "/screener/" + projectId,
xhrFields:{
responseType: 'blob'
},
success: function (result) {
console.log(result)
alert("sfa");
var blob = result;
var downloadUrl = URL.createObjectURL(blob);
var a = document.createElement("a");
a.href = downloadUrl;
a.download = "downloadFile.xls";
document.body.appendChild(a);
a.click();
}
});