Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java csv文件的内容显示在网页上,而不是正确的文件下载_Java_File_Csv_Download - Fatal编程技术网

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

Java csv文件的内容显示在网页上,而不是正确的文件下载,java,file,csv,download,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

问题:如果记录数量较大,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();
    }
}
@RequestMapping(value=“/url”,method=RequestMethod.GET)
公共void处理程序(HttpServletRequest请求、ModelMap映射、@RequestParam(“itemPk”)长pk、HttpServletResponse)引发异常{
CSVWriter CSVWriter=新的CSVWriter(新的OutputStreamWriter(response.getOutputStream());
试一试{
列表数据=新的ArrayList();
对于(int i=0;i<500;i++){
字符串[]行=新字符串[]{“asdr”、“10”、“sourajit”、“34.567”、“06-DEC-2015”、“awx445”};
添加数据(行);
}
csvWriter.writeAll(数据);
response.setContentType(“text/csv”);
setHeader(“内容处置”、“附件;文件名=volcs.csv”);
}最后{
csvWriter.flush();
csvWriter.close();
}
}
GET或POST的行为相同。
(对于POST,使用html表单打开新窗口)

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

我们需要将其视为字节

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

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

我们需要将其视为字节

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

您需要添加标题以告知浏览器其附件在响应中。检查下面的链接

String filename=“volcs.csv”;
response.setContentType(“应用程序/强制下载”);
response.setContentLength((int)f.length());
//响应。setContentLength(-1);
//setHeader(“内容传输编码”、“二进制”);
response.setHeader(“内容处置”、“附件;文件名=“+filename”);

您需要添加标题,告知浏览器其附件在响应中。检查下面的链接

String filename=“volcs.csv”;
response.setContentType(“应用程序/强制下载”);
response.setContentLength((int)f.length());
//响应。setContentLength(-1);
//setHeader(“内容传输编码”、“二进制”);
response.setHeader(“内容处置”、“附件;文件名=“+filename”);