作用
访问该接口后直接将 .ftl转为word并下载下来
代码
@GetMapping("/handRmFile")
public void handRmFile(HttpServletResponse response,String mark,Long id) throws Exception {
Map<String,Object> map = new HashMap<>(); //需要将这里面的数据存储到word
map.put("filed1","value");
map.put("filed2",new ArrayList<Object>());
// 创建临时文件夹,并创建word文档-----默认在win或linux创建
String tempDir = System.getProperty("java.io.tmpdir");
File docFile = new File(tempDir + File.separator + new Date().getTime() +".doc");
if (!docFile .exists()) {
if (!docFile .getParentFile().exists()) {
docFile .getParentFile().mkdirs();
}
docFile .createNewFile();
}
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename))); //将word文件转为输出流
//获取根据.ftl文件获取Template 实例
Configuration configuration = new Configuration(Configuration.VERSION_2_3_31);
configuration.setDefaultEncoding("UTF-8");
configuration.setClassForTemplateLoading(this.getClass(), ".ftl文件名所在路径");
Template template = configuration.getTemplate("文件名.ftl");
//将map数据输出到.ftl文件后》将.ftl转为word写入到writer中
//并将writer关闭
template.process(map, writer);
//浏览器下载
// 设置强制下载不打开
response.reset();
response.setContentType("application/msword; charset=utf-8");
response.setHeader("Content-Disposition", "attachment; filename="+ URLEncoder.encode("新的文件名,后缀由写入到out中的流定", "UTF-8"));
OutputStream out = response.getOutputStream();
FileUtils.copyFile(docFile, out); //将docFile文件写入out 中就完成了下载
out.flush();
out.close();//关闭流
// 清除生成的临时文件
FileUtils.forceDelete(docFile);
}