接上篇 —— “下载功能”实现
Excel模板数据导入 参考 上一篇 : Java实现Excel模板导入
正文:
一、接口层:
/**
* 下载
*
* @param res response响应
* @author GJT
* @Date 2022/02/10 11:27
*/
@PostMapping("/free/goods/download")
public void download(HttpServletResponse res) {
String filePath = "./template/goods.xlsx"; //模板文件存放路径
try (OutputStream os = res.getOutputStream();
InputStream bis = new BufferedInputStream(new ClassPathResource(filePath).getInputStream())) {
String type = new MimetypesFileTypeMap().getContentType("goods.xlsx");
res.setContentType(type);
String name = URLEncoder.encode("goods.xlsx", "UTF-8");
res.setHeader("Content-Disposition", "attachment;filename=" + name);
goodsApplicationService.download(os, bis); //业务层方法
} catch (Exception e) {
e.printStackTrace();
}
}
二、业务接口:
/**
* 下载
*
* @param outputStream 文件流
* @author GJT
* @Date 2022/02/10 11:28
*/
void download(OutputStream outputStream, InputStream inputStream);
三、业务接口实现:
/**
* 下载
*
* @param outputStream 文件流
* @author GJT
* @Date 2022/02/10 11:30
*/
@Override
public void download(OutputStream outputStream, InputStream inputStream) {
try {
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
workbook.write(outputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
提示: 由于在接口层try{}里指定了资源,所以在try块退出时,会自动调用inputStream.close()方法,outputStream.close()方法关闭资源。