为了账号安全,请及时绑定邮箱和手机立即绑定

如何从JSF后台bean提供文件下载?

如何从JSF后台bean提供文件下载?

偶然的你 2019-06-03 13:08:07
如何从JSF后台bean提供文件下载?有没有从JSF后台bean操作方法提供文件下载的方法?我试过很多东西。主要问题是我不知道如何获得OutputStream的响应,以便将文件内容写入。我知道怎么用Servlet,但是这不能从JSF表单中调用,并且需要一个新的请求。我怎么才能拿到OutputStream当前的响应FacesContext?
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

这就是对我有用的东西:

public void downloadFile(String filename) throws IOException {
    final FacesContext fc = FacesContext.getCurrentInstance();
    final ExternalContext externalContext = fc.getExternalContext();

    final File file = new File(filename);

    externalContext.responseReset();
    externalContext.setResponseContentType(ContentType.APPLICATION_OCTET_STREAM.getMimeType());
    externalContext.setResponseContentLength(Long.valueOf(file.lastModified()).intValue());
    externalContext.setResponseHeader("Content-Disposition", "attachment;filename=" + file.getName());

    final HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();

    FileInputStream input = new FileInputStream(file);
    byte[] buffer = new byte[1024];
    final ServletOutputStream out = response.getOutputStream();

    while ((input.read(buffer)) != -1) {
        out.write(buffer);
    }

    out.flush();
    fc.responseComplete();}


查看完整回答
反对 回复 2019-06-03
  • 3 回答
  • 0 关注
  • 586 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信