【问题标题】:HttpServletResponse response: Ask user to download file instead of auto downloadingHttpServletResponse 响应:要求用户下载文件而不是自动下载
【发布时间】:2011-07-04 08:51:22
【问题描述】:

这是我的下载代码。它只是开始下载文件而不询问用户。我搜索了多个论坛,但似乎没有任何效果。这是代码在附加到命令按钮的支持 bean 中。

public void doDownloadFile() {   

    PrintWriter out = null;

    try {
        HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();   
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-disposition", "attachment;filename=test.csv");
        out = response.getWriter();
        CSVWriter writer = new CSVWriter(out);

        List<String[]> stringList = new ArrayList<String[]>();

        for (User user : userList) {

            String[] string = {user.getEmail(), user.getName(), user.getPassword()};
            stringList.add(string);
        }

        writer.writeAll(stringList);
        out.flush();

    } catch (IOException ex) {
        Logger.getLogger(ViewLines.class.getName()).log(Level.SEVERE, null, ex);     
    } finally {
        out.close();
    }
}

【问题讨论】:

    标签: java jakarta-ee jsf-2 java-ee-6


    【解决方案1】:

    下载操作的行为是 100% 本地化的,这意味着在这种情况下是由浏览器而不是您来决定要做什么。用户的浏览器是否只是将文件转储到下载文件夹中或允许他将其保存到特定位置完全取决于浏览器。

    没有太多工作要做。

    【讨论】:

      【解决方案2】:

      这很可能是因为您的浏览器配置为无需提示即可下载这些类型的文件。代码与它无关。

      【讨论】:

      • 非常感谢!你是对的。在另一个网站上尝试过同样的行为。
      猜你喜欢
      • 2012-09-21
      • 2018-04-08
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 2012-01-07
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多