【问题标题】:spring download excel file春天下载excel文件
【发布时间】:2018-02-12 15:28:28
【问题描述】:

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

@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 接口

使用 POSTMAN(保存和下载)我能够下载文件,这很好。所以问题似乎只在使用 swagger 接口时出现

【问题讨论】:

  • 一个简单的,也许是愚蠢的观察...文件 C:\\ttt\\pfizer_polish_ontology.xlsx 好吗?是不是这个文件损坏了,所以下载的文件也损坏了?
  • 文件适合 100%。我刚刚从主要位置打开它没有问题
  • 刚刚尝试了您的代码,在 Firefox (54.0.1) 和 Chrome (60.0.3112.113) 中一切正常。希望您的问题得到解决。
  • 是的,代码工作正常。那是大摇大摆的问题。使用邮递员 API 工作正常
  • 你能解决这个问题吗?

标签: java spring rest api swagger-2.0


【解决方案1】:

我敢打赌,您的内容类型与 Excel 格式不匹配。以下内容应该足够了:

contentType("application/csv")

不管怎样,我建议你看看网页上描述了MIME Types。据我所知,格式 xsl(x) 将匹配所有这些最好的:

application/excel
application/vnd.ms-excel
application/x-excel
application/x-msexcel

【讨论】:

  • 究竟是什么不起作用?您必须指定您的问题并描述错误。
  • 我在尝试打开下载的文件时遇到同样的错误“文件已损坏,无法打开。”。文件已下载,但已损坏
【解决方案2】:

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

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

【讨论】:

  • 我刚刚使用您建议的 contentType 更新了我最初帖子中的代码 - 并且不起作用
  • 我们的做法是从HttpServletResponse 获取OutputStream 并将其写入此输出流。查看修改后的代码。
  • 哪里可以看到“修改后的代码”。你发表了吗?
猜你喜欢
  • 1970-01-01
  • 2018-05-08
  • 1970-01-01
  • 2015-02-25
  • 2013-07-22
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
相关资源
最近更新 更多