java - csv 文件的内容显示在网页上,而不是正确的文件下载

标签 java file csv download

问题:如果记录数量很大,CSV 文件的内容将显示为页面内容。

预期:文件下载。

通过 window.open(url) 从另一个页面触发请求;以下是 url 处理程序。

@RequestMapping(value = "/url", method = RequestMethod.GET)
public void handler(HttpServletRequest request,ModelMap map, @RequestParam("itemPk") long pk, HttpServletResponse response) throws Exception {
    CSVWriter csvWriter = new CSVWriter(new OutputStreamWriter(response.getOutputStream()));
    try {
        List<String[]> data = new ArrayList<String[]>();
        for (int i = 0; i < 500; i++) {
            String[] row = new String[] {"asdr", "10", "sourajit", "34.567", "06-DEC-2015", "awx445"};
            data.add(row);
        }
        csvWriter.writeAll(data);

        response.setContentType("text/csv"); 
        response.setHeader("Content-disposition", "attachment; filename=volcs.csv");


    }  finally {
        csvWriter.flush();
        csvWriter.close();
    }
}

GET 或 POST 的行为相同。 (对于 POST,使用 html 表单打开一个新窗口)

最佳答案

这是因为 Writer 实例用于生成响应。

我们需要将其视为字节。

ServletOutputStream out = response.getOutputStream(); 
out.write(baos.toByteArray());
baos.writeTo(out);
out.flush();

关于java - csv 文件的内容显示在网页上,而不是正确的文件下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37586080/

相关文章:

javascript - 如何从使用SWT浏览器从ajax请求获取数据的java脚本函数获取eclipse函数的返回值?

python - 对不同字典中相同键的多个值求和 Python

sql - LOAD DATA LOCAL,如何跳过第一行?

python - 如何在 Python 中从 CSV 文件生成多个 Vcard QRCode?

java - Sierra Chart DTC Java 套接字连接空终止符

java - 如何在 Eclipse 中添加引用

java - 如何将文件路径传递给远程 Web 服务

java - 单击按钮时的递归搜索文件方法

c# - 获取文本文件并随应用程序一起提供

java - 有没有办法在Java中满足某个条件时结束递归方法?