gpt4 book ai didi

javascript - ajax下载的excel文件已损坏

转载 作者:行者123 更新时间:2023-12-04 20:32:54 27 4
gpt4 key购买 nike

我有一个 Spring Boot Web 应用程序,它生成扩展名为 .xlsx 的 Microsoft Excel 文件.

如果我尝试从调用 localhost:8080/report/stats 的浏览器下载文件它返回正确的文件,我总是可以成功打开它。

但是,当我通过单击按钮从网页下载文件时,我得到一个坏文件,我无法打开它。

我在 JS 上有以下部分:

$.ajax({
url: 'report/stats',
type: "GET",
success: function (data) {
var link = document.createElement('a');
link.download = 'report.xlsx';
link.href = 'data:,' + data;
link.click();
}
});

Controller :
@GetMapping("stats")
public ResponseEntity downloadStatsReport() throws IOException {
return fileResponse(excelReportService.create(new StatFilter()));
}

private ResponseEntity fileResponse(File report) throws IOException {
InputStreamResource resource = new InputStreamResource(new FileInputStream(report));
return ResponseEntity.ok()
.contentLength(report.length())
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + report.getName())
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}

为什么从浏览器下载效果很好,而从 JS 下载不行?

打开文件错误:

Open file error

YES已被点击:

enter image description here

没有需要点击:

enter image description here

最佳答案

我能够使用以下代码下载有效文件

function download(fileName) {
window.location.href = "/download?description=test&logId=123";
}

关于javascript - ajax下载的excel文件已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47219761/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com