文件下载

注意:在jsp页面调用时候加上
out.clear();
out=pageContext.pushBody();
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DownLoadUtil {
	
	
	public static void fileDownload(HttpServletResponse response,HttpServletRequest request,String realPath,String fileName){  
        //获取网站部署路径(通过ServletContext对象),用于确定下载文件位置,从而实现下载  
        String path = request.getSession().getServletContext().getRealPath("/");  
        //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型  
        String agent = request.getHeader("USER-AGENT");    
        String downLoadName = null;  
        //解决浏览器不能显示中文名问题
        try{
	        if (null != agent && -1 != agent.indexOf("MSIE"))   //IE  
	        {    
	          downLoadName = java.net.URLEncoder.encode(fileName, "UTF-8");   
	        }    
	          else if (null != agent && -1 != agent.indexOf("Mozilla")) //Firefox  
	        {        
	          downLoadName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");     
	        }    
	        else     
	        {  
	          downLoadName = java.net.URLEncoder.encode(fileName, "UTF-8");   
	        }  
        }catch(Exception e){
        	e.printStackTrace();
        }
        response.setContentType("multipart/form-data");  
        //2.设置文件头:最后一个参数是设置下载文件名(假如我们叫a.pdf)  
        response.setHeader("Content-Disposition", "attachment;fileName="+downLoadName);  
        ServletOutputStream out;  
        //通过文件路径获得File对象(假如此路径中有一个download.pdf文件)  
        File file = new File(path+realPath);  
        try {  
            FileInputStream inputStream = new FileInputStream(file);  
            //3.通过response获取ServletOutputStream对象(out)  
            out = response.getOutputStream();  
            int b = 0;  
            byte[] buffer = new byte[1024];  
            while ((b = inputStream.read(buffer))!= -1){  
                //4.写到输出流(out)中  
                out.write(buffer,0,b);  
            }  
            inputStream.close(); 
            out.close();  
            out.flush();  
  
        } catch (IOException e) {  
           
        }
    }  
}

你可能感兴趣的:(文件下载)