前端页面点击后后台实现文件下载。
这里的filePath 你可以做参数传进来,也可以写一个固定值。
我这里是通过后台生成文件后,再将这个文件的路劲存入session域中的。
//文件下载
@RequestMapping("down")
public void down(HttpServletResponse response, HttpSession session) throws Exception {
//filePathSession 是我在前面存入session中的一个要下载的文件地址 比如:F:\宏-202104222000402.xls
String filePath = (String) session.getAttribute("filePathSession");
System.out.println("filePath" + filePath);
File f = new File(filePath);
if (!f.exists()) {
response.sendError(404, "File not found!");
return;
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[1024];
int len = 0;
response.reset();
response.setContentType("application/x-msdownload");
String filename = f.getName();
//这里是设置文件名的编码格式,不设置可能会出现中文不显示或乱码的问题
filename = URLEncoder.encode(filename, "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0) {
out.write(buf, 0, len);
}
br.close();
out.close();
}