从Spring Rest Controller下载文件

我试图通过Spring REST控制器来下载文件。 以下是我的代码 –

@RequestMapping(value="/aaa",method=RequestMethod.GET,produces=MediaType.APPLICATION_OCTATE_STREAM_VALUE) public ResponseEntity<byte[]> testMethod(@RequestParam("test") String test) { HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.setContentDispositionFromData("attachment","testExcel.xlsx"); responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); File file = new File("C:\\testExcel.xlsx"); Path path = Paths.get(file.getAbsolutePath()); ByteArrayResource resource = new ByteArrayResource(Files.readAllbytes(path)); return new ResposeEntity<byte[]>(resource.getByteArray(),responseHeaders,HttpStatus.OK); } 

这被称为button点击。 我点击button后没有任何反应。 在debugging这个java时,我可以看到字节stream。 在Mozilla的开发人员工具中,我可以看到成功的HTTP响应(在该excel文件的字节stream中的响应)。 根据互联网上可用的资源,浏览器应该自动下载文件,但这没有发生。

为什么下载不在浏览器中发生? 还有什么我需要做的,使其工作?

注意:这仅仅是为了POC的目的。 实际上,我必须通过Apache POI或其他一些API从数据库细节生成excel文件。

以下为我工作:

 @RequestMapping("/") public void index(HttpServletRequest request, HttpServletResponse response) throws IOException { FileInputStream inputStream = new FileInputStream(new File("C:\\work\\boot\\pom.xml")); response.setHeader("Content-Disposition", "attachment; filename=\"testExcel.xlsx\""); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); ServletOutputStream outputStream = response.getOutputStream(); IOUtils.copy(inputStream, outputStream); outputStream.close(); inputStream.close(); }