gpt4 book ai didi

java - Spring mvc + Security Pdf 显示空白

转载 作者:行者123 更新时间:2023-12-01 09:49:09 24 4
gpt4 key购买 nike

我们正在尝试我们的一个项目,并尝试提供一份 pdf 文档的下载。

以下是我们在 Controller 中的代码

@RequestMapping(value = "/usermanual", method = RequestMethod.GET)
public void getFile(HttpServletRequest req,

HttpServletResponse response) throws IOException
{


try {
// get your file as InputStream
File file = new File(req.getRealPath("/")+"js/loginPage/usermanual.pdf");
InputStream is = new FileInputStream(file);

/*BufferedOutputStream stream =
new BufferedOutputStream(new FileOutputStream(new File("E:/Backups/p.pdf")));
org.apache.commons.io.IOUtils.copy(is, stream);

stream.close();*/
// Response header
response.setHeader("Content-Disposition", "attachment; filename=123.pdf");
// copy it to response's OutputStream
org.apache.commons.io.IOUtils.copy(is, response.getOutputStream());
response.setContentType("application/pdf");
response.flushBuffer();
response.getOutputStream().close();
} catch (IOException ex) {

throw new RuntimeException("IOError writing file to output stream");
}

}

该文件是在E目录中制作的,因此文件复制在本地磁盘上没有问题,但在response.getOutputStream中存在一些问题。

结果我们得到的是空白 pdf。

请在这种情况下提供一些指导原则。预先感谢您。

最佳答案

OutputStreamclose 之前添加一个 flush

  response.getOutputStream().flush();

或者,如果您使用的是 Spring MVC 4.2,则可以使用 StreamingResponseBody

public StreamingResponseBody stream(HttpServletRequest req)
throws FileNotFoundException {
File file = new File(req.getRealPath("/")+"js/loginPage/usermanual.pdf");
InputStream is = new FileInputStream(file);
return (os) -> {
IOUtils.copy(is, os);
};
}

有关更多信息,请参阅此 post

关于java - Spring mvc + Security Pdf 显示空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37721324/

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