我正在尝试让用户能够下载文件
<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个问题,首先有时这个工作有时没有,我不知道为什么行为不一致。第二个问题,如果页面有任何异常被重定向,这对我的结构设计是不可接受的,我需要每次都能工作,如果有任何问题,页面不会重定向。