直接贴达码啦。
前端相关:
// 导出测试按钮
<a class="btn btn-warning" onclick="exportTxt()" shiro:hasPermission="personnel:sandingData:export">
<i class="fa fa-download"></i> 导出测试
</a>
// js里导出测试方法
function exportTxt(){
window.location.href = ctx + "personnel/sandingData/exportTxt";
}
后端相关代码:
//导出测试
@GetMapping("/exportTxt")
public void exportTxt(HttpServletResponse response){
//获取导入的数据列表 \r\n是换行
List<String> textList=new ArrayList<>();
textList.add("2021-08-12 09:14:34 操作记录1"+ "\r\n");
textList.add("2021-08-12 09:14:34 操作记录2"+ "\r\n");
textList.add("2021-08-12 09:14:34 操作记录3"+ "\r\n");
textList.add("2021-08-12 09:14:34 操作记录4"+ "\r\n");
//设置响应的字体和内容类型
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);
//遍历添加数据列表的数据
for(String item:textList)
{
buff.write(item.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;
}
结果: