Как скачать Excel, используя Ajax Call? - PullRequest
1 голос
/ 06 марта 2019

Я вернул свой файл 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 Ответ

2 голосов
/ 06 марта 2019

Используемый вами метод будет работать только для простых текстовых файлов, xls не является обычным текстом, поэтому вам нужно извлечь его как двоичные данные.

Если вы используете jQuery 3+, вы можете установитьresponseType запроса 'blob' и используйте этот BLOB-объект для создания URL-адреса вашего блоба для загрузки.

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();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...