`
蒋启云
  • 浏览: 1528 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

servlet文件下载

 
阅读更多
import  java.io.BufferedInputStream;
import  java.io.BufferedOutputStream;
import  java.io.File;
import  java.io.FileInputStream;
import  java.io.IOException;

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

public   class  FileDownload  extends  HttpServlet {

  
protected   void  service(HttpServletRequest req, HttpServletResponse res)
      
throws  ServletException, IOException {

    
//  服务器相对路径
    String path  =  req.getParameter( " path " );
    
//  服务器绝对路径
    path  =  getServletContext().getRealPath( " / " +  path;

    
//  检查文件是否存在
    File obj  =   new  File(path);
    
if  ( ! obj.exists()) {
      res.setContentType(
" text/html;charset=GBK " );
      res.getWriter().print(
" 指定文件不存在! " );
      
return ;
    }

    
//  读取文件名:用于设置客户端保存时指定默认文件名
     int  index  =  path.lastIndexOf( " \\ " );  //  前提:传入的path字符串以“\”表示目录分隔符
    String fileName  =  path.substring(index  +   1 );

    
//  写流文件到前端浏览器
    ServletOutputStream out  =  res.getOutputStream();
    res.setHeader(
" Content-disposition " " attachment;filename= "   +  fileName);
    BufferedInputStream bis 
=   null ;
    BufferedOutputStream bos 
=   null ;
    
try  {
      bis 
=   new  BufferedInputStream( new  FileInputStream(path));
      bos 
=   new  BufferedOutputStream(out);
      
byte [] buff  =   new   byte [ 2048 ];
      
int  bytesRead;
      
while  ( - 1   !=  (bytesRead  =  bis.read(buff,  0 , buff.length))) {
        bos.write(buff, 
0 , bytesRead);
      }
    } 
catch  (IOException e) {
      
throw  e;
    } 
finally  {
      
if  (bis  !=   null )
        bis.close();
      
if  (bos  !=   null )
        bos.close();
    }
  }

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics