用serlet實現文件下載

原文http//blog_sina_com_cn/s/blog_49a269ae01008yv2.html


之前沒怎麼用過這個,這次項目中用到了,於是總結一下:

應該說主要注意三方面:

1、寫一個servlet

2、在web.xml中配置這個servlet

3、頁面上調用這個servlet

 

第一:

寫一個servlet,當然要繼承javax.servlet.http.HttpServlet,重寫post或者get方法(看需要),這個servlet的思想就是將要下載的文件寫到文件流中去,而這個文件輸出流就是HttpServletResponse對象的輸出流,如下所示:

public class DownloadServlet extends HttpServlet{
 
 
 public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
 {
  try
  {
   String downFilename=request.getParameter("curfile");
   String filepath=request.getParameter("path");
        response.setContentType("text/plain");
        response.setHeader("Location",downFilename);
        response.setHeader("Content-Disposition", "attachment; filename=" + downFilename);
        OutputStream outputStream = response.getOutputStream();
        InputStream inputStream = new FileInputStream(filepath+downFilename);
        byte[] buffer = new byte[1024];
        int i = -1;
        while ((i = inputStream.read(buffer)) != -1) {
         outputStream.write(buffer, 0, i);
        }
        outputStream.flush();
        outputStream.close();
  }catch(FileNotFoundException e1)
  {
   System.out.println("沒有找到您要的文件");
  }
  catch(Exception e)
  {
   System.out.println("系統錯誤,請及時與管理員聯繫");
  }
    }
 
 
 public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
 {
  doPost(request,response);
 }

}

 

web.xml配置:

<servlet>
  <servlet-name>download</servlet-name>
  <servlet-class>com.dichain.common.tools.DownloadServlet</servlet-class>
 </servlet>

<servlet-mapping>
  <servlet-name>download</servlet-name>   
  <url-pattern>/Download</url-pattern>
 </servlet-mapping>

 

jsp中調用servlet彈出一個下載對話框:

window.open ('Download?curfile='+curfile+'&path='+path,'newwindow','height=30,width=40,top='+yy+',left='+xx+',toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no');


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章