jsp下载文件demo

jsp下载文件demo


1.前台

2.后台


1.前台

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

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

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

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

Javascript代码 < width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflashplayer">
  1. function downloadFile(url){  
  2.   var elemIF = 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.         var obj = 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.后台程序

posted @ 2011-01-05 15:30  qiang.xu  阅读(13586)  评论(0编辑  收藏  举报