HttpServletResponse响应:要求用户下载文件而不是自动下载

时间:2011-02-25 14:53:11

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

这是我的下载代码。它只是开始下载文件而不询问用户。我搜索了多个论坛,似乎没有任何工作。这是代码在附加到commandButton的辅助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();
    }
}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

如何处理下载的行为是100%本地的,这意味着它决定了在这种情况下要做什么的浏览器,而不是你。用户的浏览器是将文件转储到下载文件夹中还是允许将其保存到特定位置完全取决于浏览器。

没什么可做的。