利用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();

	      }

	  }

%>
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值