问题描述
我在后端用POI生成了workboot对象 使用wb.write(res.getOutputStream)写入输出流 为什么浏览器没有下载,debug的时候也是正常的没有抛出异常,是需要在前端页面对输入流进行处理吗 ,如果是的话要怎么处理
问题出现的环境背景及自己尝试过哪些方法
后端 springboot 前端react + dva + antd
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
后端代码:
@RequestMapping(value = "/plan/generateExcel", method = RequestMethod.POST)
public @ResponseBody void generateExcel(HttpServletResponse response){
HSSFWorkbook wb = new HSSFWorkbook();//生成工作簿
Sheet sheet = wb.createSheet("汇总"); //生成汇总sheet
.....
response.reset();
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
try {
SimpleDateFormat newsdf=new SimpleDateFormat("yyyyMMddHHmmss");
String date = newsdf.format(new Date());
response.addHeader("Content-Disposition", "attachment;filename=\""
+ new String(("数据表" + date + ".xls").getBytes("UTF-8"),
"UTF-8") + "\"");
OutputStream out = response.getOutputStream();
wb.write(out);
out.flush();
out.close();
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, "导出失败!");
e.printStackTrace();
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "导出失败!");
e.printStackTrace();
}
前端model
*generateExcel({payload},{call}){
yield call(generateExcel,payload);
}
刚学react 对这些还不是很了解
用fetch请求浏览器把数据给你了, 浏览器当然不会下载,为了兼容性,导出excel用a标签
<a href="fetchurl">导出</a>