0

我需要查看和下载 .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();
    }

有人能理解为什么会这样吗?

谢谢。

4

2 回答 2

4

如果要使文件可下载,则需要将标题“Content-Disposition”添加到响应中。

header的格式为:Content-Disposition: attachment;文件名="fname.ext"

尝试类似的东西。

res.addHeader("Content-Disposition",  "attachment; filename=\"document.pdf\"");
于 2012-05-05T23:43:44.013 回答
1

使用下面的代码:

InputStream is = new FileInputStream(new File(..abcolute path...)));

response.setHeader("Content-Disposition", "attachment;filename=\""+filename+".pdf"+"\"");
IOUtils.copy(is, response.getOutputStream());     
              response.flushBuffer();

在我的应用程序中它工作正常。

于 2012-05-07T04:39:41.537 回答