AntSoul

它总是在行走,行走,永远的行走…… 行走是它生存的恒久姿态和最佳造型。 它似乎有一双不知疲倦的脚。 ———我说的是蚂蚁。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  42 随笔 :: 0 文章 :: 1 评论 :: 0 Trackbacks
        最近遇到个这样的问题(在不使用组件【如jspsmartupload】的情况下)在web页面上如果一个有个连接,连接的的是文本文件,当左键点击的话会查看这个文件,右键点击可以下载.但是如果是windows不识别的文件,左键点击直接就下载了比如zip,那如何点击左键直接下载.txt的文本文件呢?
     要直接下载一个文件,我们需要做两件事,第一件事是:设定响应的内容类为“application/octet-stream”,大小写无关。第二件事是:设置HTTP的响应头名字为:Content-Disposition,设定值为:attachment; filename = theFileName。这里的theFileName就是出现在文件下载对话框里的默认文件名,通常和所下载的文件名字相同,但也可以不同。
 
代码
  1. <meta http-equiv="Content-Type" content="text/html; charset=gbk">  
  2. <HTML>  
  3. <HEAD>  
  4.   
  5. </HEAD>  
  6.   
  7. <BODY>  
  8. <a href = "download1.jsp?filepath=d:\\&filename=1a.txt" >downloadtest1</a>  
  9.   
  10. </BODY>  
  11. </HTML>  

这是页面上的连接,我传了个路径和文件名
代码
  1. <%    
  2.     String filename = request.getParameter("filename");//"1a.txt";    
  3.     String filepath = request.getParameter("filepath");//"d:\\";   
  4.      int i = 0;   
  5.     response.setContentType("application/octet-stream");  
  6.     response.setHeader("Content-Disposition","attachment;filename = "+filename);    
  7.     java.io.FileInputStream fileInputStream = new java.io.FileInputStream(filepath+filename);   
  8.     while((i= fileInputStream.read()) != -1){   
  9.         out.write(i);   
  10.     }   
  11. %>  
  1. <%    
  2.     String filename = request.getParameter("filename");//"1a.txt";    
  3.     String filepath = request.getParameter("filepath");//"d:\\";   
  4.      int i = 0;   
  5.     response.setContentType("application/octet-stream");  
  6.     response.setHeader("Content-Disposition","attachment;filename = "+filename);    
  7.     java.io.FileInputStream fileInputStream = new java.io.FileInputStream(filepath+filename);   
  8.     while((i= fileInputStream.read()) != -1){   
  9.         out.write(i);   
  10.     }   
  11. %>  

这是被调用的download1.jsp,这个jsp就是执行直接下载文件。
参考一下JS来实现:

function svcode(obj) {
var winname = window.open('', '_blank', 'height=1,width=1,top=200,left=300');
winname.document.open('text/html', 'replace');
winname.document.writeln(obj.value);
winname.document.execCommand('saveas','','code.txt');
winname.close();
}


posted on 2007-04-10 09:14 yok 阅读(3698) 评论(1)  编辑  收藏 所属分类: Scripts

评论

# re: 如何点击连接直接下载(.txt文本)文件 2008-12-01 15:16 juan
不会下载txt文本,怎样下啊  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: