很多時候業務中會用到文件下載什麼的, 有些方法可能需要一些前端的文件下載組件什麼的, 相對比較複雜,在這裏只講一種非常簡單的文件下載, 但是這個方法有點小要求, 就是要下載的文件必須已經存在 並且存在服務器本地.
/**
* 文件下載,
* 注: 只需要改文件名和文件路徑 其他的完全複製粘貼即可使用哦.
* @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();
}