我需要同时拥有视图和下载.pdf文件才能使用计算机功能。 我正在使用Spring MVC 3,视图就像将url指向文件的位置一样简单。
但我不确定如何使该文件可下载。我正在尝试下面的代码,但它似乎什么也没有返回,请求永远不会完成。
@RequestMapping(value = "files/{fileName}")
public void downloadPDF(@PathVariable("fileName") String fileName, HttpServletRequest req, HttpServletResponse res) {
logger.debug("Http request URL is " + req.getRequestURL());
res.setContentType("application/pdf");
URL pdf = null;
try {
pdf = new URL(req.getRequestURL().toString());
BufferedInputStream is = new BufferedInputStream(pdf.openStream());
IOUtils.copy(is, res.getOutputStream());
res.flushBuffer();
} catch (IOException e) {
e.printStackTrace();
}
有人能理解为什么会这样吗?
感谢。
答案 0 :(得分:4)
如果您想让文件可下载,则需要将标题“Content-Disposition”添加到响应中。
标题的格式为: 内容 - 处理:附件;文件名= “fname.ext”
尝试类似的东西。
res.addHeader("Content-Disposition", "attachment; filename=\"document.pdf\"");
答案 1 :(得分:1)
使用以下代码:
InputStream is = new FileInputStream(new File(..abcolute path...)));
response.setHeader("Content-Disposition", "attachment;filename=\""+filename+".pdf"+"\"");
IOUtils.copy(is, response.getOutputStream());
response.flushBuffer();
在我的应用程序中它工作正常。