#ajax #spring-mvc
#ajax #spring-mvc
Вопрос:
Я вернул свой файл Excel из spring controllr. но файл не конвертируется.
Контроллер :—
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();
}
});
Ответ №1:
Используемый вами метод будет работать только для обычных текстовых файлов, xls — это не обычный текст, поэтому вам нужно извлечь его в виде двоичных данных.
Если вы используете jQuery 3 , вы можете установить тип ответа запроса в ‘blob’ и использовать этот большой двоичный объект для создания своего URL-адреса большого двоичного объекта для загрузки.
jQuery 3
$.ajax({
type: "GET",
url: "/screener/" projectId,
xhrFields:{
responseType: 'blob'
},
success: function (result) {
console.log(result)
alert("sfa");
var blob = resu<
var downloadUrl = URL.createObjectURL(blob);
var a = document.createElement("a");
a.href = downloadUrl;
a.download = "downloadFile.xls";
document.body.appendChild(a);
a.click();
}
});