我有Spring Controller,调用它的Request map。我正在生成PDF文件。但问题是 生成的PDF的名称与请求映射名称相同。
我知道我们可以使用@PathVariable来命名。但我不想使用它。
示例:
@RequestMapping(value = { "/pdfDownload" }, method = RequestMethod.GET)
public void pdfDownload(HttpServletRequest request, HttpServletResponse response) {
//Logic OF generating PDF file
// set response
response.setContentType("application/pdf");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "inline; filename=Mypdf12345.pdf");
}
下面, 我生成的PDF文件名称为pdfDownload.But我希望它为Mypdf12345.pdf。 我不想使用@PathVariable
请帮我解决这个问题。 谢谢。
答案 0 :(得分:1)
response.setContentType("application/pdf");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=Mypdf12345.pdf");
答案 1 :(得分:0)
以这种方式试试
response.setContentType("application/x-pdf");
response.addHeader("Content-Disposition", "attachment; filename=Mypdf12345.pdf");
答案 2 :(得分:-1)
我得到了答案。 早期的问题是我使用响应的输出流来编写PDF文档。 因此,现在我正在向ByteArrayOutputStream写PDF文档,在完成写作之后,我正在将该流写入响应的outputsteram。
e.g。
@RequestMapping(value = { "/pdfDownload" }, method = RequestMethod.GET)
public void pdfDownload(HttpServletRequest request, HttpServletResponse response) {
//using bytearrayoutputstream instead of response outputstream,
ByteArrayOutputStream out = new ByteArrayOutputStream();
//Logic OF generating PDF file
// set response
response.setContentType("application/pdf");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "inline; filename=Mypdf12345.pdf");
//transferring that stream to response output stream
out.writeTo(response.getOutputStream());
}
就是这样。 感谢您的回复。