很多时候业务中会用到文件下载什么的, 有些方法可能需要一些前端的文件下载组件什么的, 相对比较复杂,在这里只讲一种非常简单的文件下载, 但是这个方法有点小要求, 就是要下载的文件必须已经存在 并且存在服务器本地.
/**
* 文件下载,
* 注: 只需要改文件名和文件路径 其他的完全复制粘贴即可使用哦.
* @param req
* @param res
* @throws Exception
*/
public void downLoad(HttpServletRequest req,HttpServletResponse res) throws Exception{
//一般此方法和生成文件到本地的方法是配套的,一起用, 一个生成, 一个下载
//生成并下载文件的流程, 就是先生成文件到服务器本地,然后再将服务器下载到 客户所在地, 用的是浏览器的默认下载位置.
String filename = "文件名.xls";//注意 : 这里是全文件名要加上文件名后缀, 不然会是无法识别的文件哦,
String filepath = "D:/wrwExcel";//设置文件所在的路径
req.setCharacterEncoding("UTF-8");//这一句是为了防止中文乱码 ,需要抛出异常 ,随便抛个啦
//第一步:设置响应类型
res.setContentType("application/force-download");//应用程序强制下载
InputStream in = new FileInputStream(filepath+filename);//通过路径读取文件
//解决下载文件时 文件名中文乱码
filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");
res.setHeader("Content-Disposition", "attachment;filename="+filename);
res.setContentLength(in.available());
//第三步:老套路,开始copy
OutputStream out = res.getOutputStream();
byte[] b = new byte[1024];
int len = 0;
while((len = in.read(b))!=-1){
out.write(b, 0, len);
}
out.flush();
out.close();
in.close();
}