jsp下载文件demo

jsp下载文件demo


1.前台

2.后台


1.前台

http://www.javaeye.com/topic/446631

为什么要选择js方式下载文件?因为下载地址需要根据你的点击,及选择来动态计算的。
如果直接 ajax 请求下载地址,总会出现些问题...具体表现为文件直接以字符串形式返回。

首先方案一,使用window.open(url),这样会有一个问题,因为会打开一个窗口!虽然这个窗口会在点击下载时关闭,但看起来确实不美观!

方案二,使用Iframe ,具体见代码:

Javascript代码
  1. functiondownloadFile(url){
  2. varelemIF=document.createElement("iframe");
  3. elemIF.src=url;
  4. elemIF.style.display="none";
  5. document.body.appendChild(elemIF);
  6. }



完美解决!
(PS:发现构造语言来描述明白一件事真是个累人的活啊,看不懂,轻拍)


  1. Ext.Ajax.request({
  2. url:'getPath.action',
  3. success:function(res){
  4. varobj=Ext.decode(res.responseText);
  5. //console.log(obj);//可以到火狐的firebug下面看看obj里面的结构
  6. //加入getPath返回的json为{'path':'upload/abc.jpg'}
  7. window.location.href=obj.path;//这样就可以弹出下载对话框了
  8. }
  9. });


只要链接的文件存在,就会给出弹出保存对话框.

<a href="test.rmvb">下载此文件 </a>

如果你一定要用JS的话,有两种办法,推荐第一种:

办法1: //好处就是,指定下载的文件如果不存在,浏览器地址也不会有什么变化.反之则提示保存.
HTML code <a href="#" onClick="download()">下载文件</a> <iframe id="downloadURL" height="0" width="0" src=""></iframe> <script language="javascript"> function download(){ document.getElementById("downloadURL").src="test.rmvb"; } </script>

办法2: //缺点就是,指定下载的文件如果不存在,浏览器地址会变化.
HTML code <a href="#" onClick="download(this)">下载文件</a> <script language="javascript"> function download(obj){ obj.href="test.rmvb"; } </script>


2.后台程序

public void downloadPdf(HttpServletRequest request, HttpServletResponse response) throws Exception { String id = request.getParameter("projectid"); String filename = this.dao.queryDocFillName(id); String path = request.getContextPath() + "/frontWeb/onecasefile/approvefile/" + filename + ".pdf"; File pdfFile = new File(request.getRealPath("/").concat( "frontWeb/onecasefile/approvefile/").replace("//", "/") + filename + ".pdf"); response.setContentType("application/pdf"); response.setContentType("application/force-download"); response.addHeader( "Content-Disposition","attachment; filename=" + "download" ); response.setContentLength( (int) pdfFile.length( ) ); FileInputStream input = new FileInputStream(pdfFile); BufferedInputStream bufferedInputStream = new BufferedInputStream(input); int readBytes = 0; while((readBytes = bufferedInputStream.read( )) != -1) response.getOutputStream().write(readBytes); }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值