首页 > 解决方案 > 从 glassfish 容器外部下载 pdf 文件

问题描述

我正在尝试下载由另一个应用程序创建并存储在我的 Web 容器 (Glassfish) 之外的文件夹 (D:\forDownload\pdfs) 中的 pdf 文件。我正在使用 primefaces 8.0 RC1 和 windows server 2012

标签: pdfprimefacesdownloadglassfish

解决方案


pb 解决了这个问题:

        File file = new File("D:\forDownload\pdfs\\"+bean.getCode()+".pdf");            
        InputStream fis = new FileInputStream(file);
        byte[] buf = new byte[204800];
        int offset = 0;
        int numRead = 0;  
        while ((offset < buf.length) && ((numRead = fis.read(buf, offset, buf.length - offset)) >= 0)) 
        {
          offset += numRead;
        }
        fis.close();

        HttpServletResponse response =
           (HttpServletResponse) FacesContext.getCurrentInstance()
               .getExternalContext().getResponse();

        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "attachment;filename="+bean.getCode()+".pdf");
        response.getOutputStream().write(buf);
        response.getOutputStream().flush();
        response.getOutputStream().close();
        FacesContext.getCurrentInstance().responseComplete();  

推荐阅读