public static void downloadFile(HttpServletRequest request,HttpServletResponse response,String filepath){
OutputStream out = null;
FileInputStream in =null;
try{
File file = new File(filepath);
//如果文件不存在
if(!file.exists()){
return;
}String f=File.separatorChar+"";
filepath=filepath.replace("/", f);
filepath=filepath.replace("\\", f);
//处理文件名
String realname = filepath.substring(filepath.indexOf("/")+1);
//设置响应头,控制浏览器下载该文件
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8"));
//读取要下载的文件,保存到文件输入流
in = new FileInputStream(filepath);
//创建输出流
out = response.getOutputStream();
//创建缓冲区
byte buffer[] = new byte[1024];
int len = 0;
//将输入流内容读取到缓冲区当中
while((len=in.read(buffer))>0){
//输出内容到浏览器
out.write(buffer, 0, len);
}
colseDownloadFile( out, in);
}catch(Exception e){
colseDownloadFile( out, in);
e.printStackTrace();
}
}public static void colseDownloadFile(OutputStream out,FileInputStream in){
try{
//关闭文件输入流
if(in!=null)in.close();
//关闭输出流
if(out!=null)out.close();
}catch(Exception e){
e.printStackTrace();
}
}