主要使用Java的泛型、反射、临时文件、文件流
整体流程:
要返回文件给前端,只需要获取response中的OutputStream,然后像其中写入文件流,就能返回前端进行下载了。
1、controller层的代码
OutputStream stream = response.getOutputStream();
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("content-Disposition", "attachment;filename=" + URLEncoder.encode("导入详情.csv", "utf-8"));
stream = blacklistService.exportImportDetails(fileCode, stream);
stream.flush();
stream.close();
2、在service层调用工具类,并将处理后的文件流写入OutputStream
List<ImportInfo> importInfos = ResultManage.importInfosMap.get(fileCode); //取到你要转化成csv的集合
String[] attributeSet = {
"name","idCard","address","importResult","resultInfo"}; //设置要获取的字段
CsvExportUtil.export(importInfos,outputStream, ExportImportRecordEnum.class,attributeSet); //调用工具类
return outputStream;
3、工具类
代码不长,有可以优化的地方,多多指教。
import org