java - spring下载excel文件

标签 java spring rest api swagger-2.0

我有以下 Controller 来下载 excel 文件。该文件已下载,但当我打开它时,我得到“文件已损坏,无法打开。”。我在 Controller 中做错了什么?

@ApiOperation(value = "export ontology")
@RequestMapping(value = "/export/{ontologyId}", method = RequestMethod.GET)
public ResponseEntity<InputStreamResource> exportExcel(@PathVariable Long ontologyId) throws FileNotFoundException {

    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Description", "File Transfer");
    headers.add("Content-Disposition", "attachment; filename=pfizer_polish_ontology.xlsx");
    headers.add("Content-Transfer-Encoding", "binary");
    headers.add("Connection", "Keep-Alive");
    headers.setContentType(
            MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"));

    File file = new File("C:\\ttt\\pfizer_polish_ontology.xlsx");

    InputStreamResource isr = new InputStreamResource(new FileInputStream(file));
    return ResponseEntity.ok().contentLength(file.length()).headers(headers).body(isr);
}

我想添加一个重要的细节 我正在使用 REST API 的 Swagger 接口(interface)

使用 POSTMAN(保存并下载)我能够下载文件并且很好。所以似乎问题仅在使用 swagger 接口(interface)时出现

最佳答案

这是我用于 xlsx 文档的那个:

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

关于java - spring下载excel文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46036255/

相关文章:

php - 从 PHP API 创建 REST API

java - 使用对象在java中自动装箱拆箱

java - java中的序列比较

java - Firefox 在驱动程序最后一个窗口关闭时崩溃

eclipse - 我在项目属性中看不到项目方面。知道一定出了什么问题吗?

python - 如何 : Write Python API wrapper?

java - 从 Collectors.partitioningBy 返回非类类型

java - Spring Boot - 从 jar 中访问 firebase admin sdk 凭据 json 文件

java - 如何在抛出 BeanCreationException 后关闭应用程序

java - 部署到 Tomcat 的 Spring boot WAR 和缺少静态资源的上下文