SpringBoot导出txt文件
/* 拼接字符串* @author* @param* @return*/@RequestMapping("exportLog.do")public void exportLog(HttpServletResponse response){//获取日志List<DtmSystemLog> list = logService.getLogs();//拼接字符串StringBuffer te
·
/* 拼接字符串
* @author
* @param
* @return
*/
@RequestMapping("exportLog.do")
public void exportLog(HttpServletResponse response){
//获取日志
List<DtmSystemLog> list = logService.getLogs();
//拼接字符串
StringBuffer text = new StringBuffer();
for(DtmSystemLog log:list){
text.append(log.getOpeuser());
text.append("|");
text.append(log.getOpedesc());
text.append("|");
text.append(dateString);
text.append("\r\n");//换行字符
}
exportTxt(response,text.toString());
}
/* 导出txt文件
* @author
* @param response
* @param text 导出的字符串
* @return
*/
public void exportTxt(HttpServletResponse response,String text){
response.setCharacterEncoding("utf-8");
//设置响应的内容类型
response.setContentType("text/plain");
//设置文件的名称和格式
response.addHeader("Content-Disposition","attachment;filename="
+ genAttachmentFileName( "文件名称", "JSON_FOR_UCC_")//设置名称格式,没有这个中文名称无法显示
+ ".txt");
BufferedOutputStream buff = null;
ServletOutputStream outStr = null;
try {
outStr = response.getOutputStream();
buff = new BufferedOutputStream(outStr);
buff.write(text.getBytes("UTF-8"));
buff.flush();
buff.close();
} catch (Exception e) {
//LOGGER.error("导出文件文件出错:{}",e);
} finally {try {
buff.close();
outStr.close();
} catch (Exception e) {
//LOGGER.error("关闭流对象出错 e:{}",e);
}
}
}
//原文说这个方法能解决文件中文名乱码问题,但是我实际试了以后中文的文件名依然乱码(文件内容中的中文能正常显示),不知道为什么
//最后是由前端生成的中文名
public String genAttachmentFileName(String cnName, String defaultName) {
try {
cnName = new String(cnName.getBytes("gb2312"), "ISO8859-1");
} catch (Exception e) {
cnName = defaultName;
}
return cnName;
}
更多推荐
已为社区贡献1条内容
所有评论(0)