0

我对以下 java 代码有疑问:

    final FacesContext facesContext = FacesContext.getCurrentInstance();
    final ExternalContext externalContext = facesContext.getExternalContext();
    final HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();

    response.setContentType("text/plain; charset=ISO-8859-1");
    response.setHeader("Content-Disposition", "attachement;filename=result.csv");
    final OutputStream outputSteam = response.getOutputStream();

    CSVWriter writer = new CSVWriter(new OutputStreamWriter(outputSteam, "ISO-8859-1"), ';', '"');

    // Fill the csv file with something 

    writer.close();
    outputSteam.flush();
    outputSteam.close();

我有一个系统,这可以将一些文件导出为 csv 格式,应该用 MS Excel 引用。有时,如果用户将 csv 导出文件保存在他的计算机硬盘上,表格计算程序可能不会自动启动。这样,文件就不是“result.csv”文件,而是“result.csv.txt”文件。但为什么?问题只存在于firefox浏览器,bur不存在于IE中。

java代码中是否缺少任何内容?有什么特点吗?或者这是我的java代码没有引起的唯一Windows内部问题?

感谢帮助 !

格雷茨马尔维夫

4

1 回答 1

0

尝试将 ContentType 设置为 text/csv 而不是 text/plain。

另请参阅响应内容类型为 CSV

于 2013-08-22T06:52:27.020 回答