gpt4 book ai didi

excel - 从 Spring Rest Controller 下载文件

转载 作者:行者123 更新时间:2023-12-02 21:24:27 28 4
gpt4 key购买 nike

我正在尝试通过 Spring REST Controller 下载文件。下面是我的代码 -

@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);
}

这通过单击按钮来调用。我点击按钮后什么也没有发生。在调试这个java时,我可以看到字节流。在Mozilla的开发者工具中,我可以看到成功的HTTP响应(以该excel文件的字节流形式响应)。根据互联网上可用的资源,浏览器应该自动下载该文件,但这种情况没有发生。

为什么浏览器中没有进行下载?我还需要做什么才能使其正常工作?

注意:这仅用于 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();
}

关于excel - 从 Spring Rest Controller 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44028127/

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