利用RequestDispatcher實現文件下載,支持下載工具

這篇文章同http://blog.csdn.net/sunyujia/archive/2008/03/26/2221442.aspx之所以又發佈了一遍,是因爲csdn的博客系統經常把上面那篇文章刪掉,我也不知道爲什麼,每次修改的時候,內容都會爲空,應該是bug,有點無語.  

一個好用的下載文件的實現方法,好多朋友喜歡自己控制輸出流來實現下載,但是那種方法非常容易出問題,而且不能使用下載工具進行下載,利用這種方式還可以使用下載工具進行下載,也不用擔心輸出流有問題,因爲是web容器控制的, jsp文件只有兩個參數,一個是下載對話框提示要保存的文件名,一個是文件做在服務器上面的相對路徑,點擊下載後頁面不僅不會跳轉,還會彈出文件保存對話框,還支持目標另存爲或使用下載工具進行下載. <a herf='X.jsp?fileName=a.doc&filePath=x/a.doc'>點擊下載</a> 

<%

	  String filePath = "/"+request.getParameter("path");

	  String fileName = request.getParameter("name");

	  if(fileName!=null&&filePath!=null){

		  response.setContentType("application/x-download");

	      response.addHeader("Content-Disposition","attachment;filename=" + java.net.URLEncoder.encode(fileName,"UTF-8"));

	      try{

	    	  out.clear();

	    	  out=pageContext.pushBody(); 

	      }catch(Throwable e){

	          e.printStackTrace();

	      }

	      try{

	          RequestDispatcher dis = application.getRequestDispatcher(filePath);

	          dis.forward(request,response);

	      }catch(Throwable e){

	          e.printStackTrace();

	      }finally{

	    	  response.flushBuffer();

	      }

	  }

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