使用重定向下载文件

时间:2014-08-24 15:28:28

标签: http jsf download

我正在尝试让用户能够下载文件

<h:commandLink value="yes" actionListener="#{Bean.readFileFromServer}"/>

方法redFileFromServer是一个返回void的方法,它执行一些逻辑然后调用anthoer方法将文件返回给响应

 public void exportList() throws IOException {
        FacesContext fc = FacesContext.getCurrentInstance();
        fc = FacesContext.getCurrentInstance();
        ExternalContext ec = fc.getExternalContext();
        ec.responseReset();
        try {
            userLogger.info("Exposting report ");

            ec.setResponseContentType("application/octet-stream"); // Check

            ec.setResponseHeader("Content-Disposition", "attachment; filename=\"" + result.getFileName() + "\"");
            OutputStream output = ec.getResponseOutputStream();

            int octet;

            while ((octet = input.read()) != -1) {
                output.write(octet);
            }

            input.close();
            output.close();

            fc.responseComplete();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

下载的文件是压缩zip文件,我有2个问题,首先有时这个工作有时没有,我不知道为什么行为不一致。第二个问题,如果页面有任何异常被重定向,这对我的结构设计是不可接受的,我需要每次都能工作,如果有任何问题,页面不会重定向。

0 个答案:

没有答案