直接上代码
@Controller
@RequestMapping(value="download")
@ResponseBody
public void download(HttpServletRequest request,HttpServletResponse response){
//获取系统换行符
String lineSeparator = System.getProperty("line.separator","\r\n");
//准备数据
String csvData = "1,2,3" + lineSeparator + "4,5,6" + lineSeparator;
String fileName = "demo.csv";
String userAgent = request.getHeader("User-Agent");
String encodedFileName;
if (userAgent.contains("MSIE") || userAgent.contains("Trident")){
//支持IE内核,避免文件名中文乱码
encodedFileName = URLEncoder.encode(fileName,"UTF-8");
}else {
//支持非IE内核,避免文件名中文乱码
encodedFileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
}
response.setCharacterEncoding("UTF-8");
response.setContentType("text/csv");
response.setHeader("Content-Disposition","attachment;filename=" + encodedFileName);
//避免csv文件内容中文乱码
OutputStreamWriter osw = new OutputStreamWriter(response.getOutputStream(),"GBK");
osw.write(csvData);
osw.flush();
osw.close();
}