CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

怎样实行文本文件下载?

楼主apple058(浪迹天涯)2005-04-02 12:06:42 在 Java / Web 开发 提问

一般来说下载就是  
  <a   href="d:\program\mypro.exe">这里下载</a>  
  但是我要下载文本时候,他就不给我下载,而是直接显示在网页上,有没有好的办法让他不显示在网页上,而可以下载文本!谢谢! 问题点数:0、回复次数:13Top

1 楼LDH202(玲海)回复于 2005-04-02 12:11:56 得分 0

没办法,这是浏览器控制的,这个问题相当于  
  问:如何下载网页  
   
  <a   href="d:\program\mypro.html">这里下载</a>  
   
  你说浏览器会打开一个下载提示吗?Top

2 楼mygia(www.gzcost.com)回复于 2005-04-02 12:59:47 得分 0

好像有行的,强制下载,有些邮件系统不是这样吗?附件是文本的点击也是保存文本。  
  以前看过,现在一时找不到。Top

3 楼LDH202(玲海)回复于 2005-04-02 13:29:15 得分 0

不行的,浏览器不同效果都很不一样  
   
  没有所谓的强制下载  
   
  但是你可以尝试编写一个Servlet来实现,将需要下载的文件设置为attachment  
   
  能够解决某些类型文件的下载问题  
   
  噢,当然,HTML还是不行Top

4 楼Idora(我不当老大已经很多年,恩)回复于 2005-04-02 14:08:16 得分 0

<%  
  try{  
  String   filename   =   "test.txt";  
  String   filepath   =   "D:\\report\\";  
  response.setContentType("application/octet-stream");  
  response.setHeader("Content-Disposition",  
  "attachment;   filename=\""   +   filename   +   "\"");  
   
  java.io.FileInputStream   fileInputStream   =  
  new   java.io.FileInputStream(filepath+filename);  
  int   i;  
  while   ((i=fileInputStream.read())   !=   -1)   {  
  out.write(i);  
  }  
  fileInputStream.close();  
  out.close();  
  }catch(java.io.IOException   e){  
  e.printStackTrace();  
  }  
  %>Top

5 楼yeyu710(叶雨)回复于 2005-04-02 14:22:56 得分 0

楼上的真的能行吗?Top

6 楼cqgaoke(技高软件公司)回复于 2005-04-02 15:44:23 得分 0

upTop

7 楼zxbrgjs(GoFace)回复于 2005-04-02 16:01:18 得分 0

html可以啊Top

8 楼zxbrgjs(GoFace)回复于 2005-04-02 16:06:04 得分 0

写一个servlet,  
   
          BufferedInputStream   bis   =   null;  
          BufferedOutputStream   bos   =   null;  
   
          try   {  
   
              File   file   =   .....;  
   
              String   suggestName   =   .....;  
   
              response.setContentType("application/octet-stream");  
              response.setHeader("Content-disposition","attachment;   filename="+suggestName   );  
   
              response.setContentLength((int)file.length());  
   
              //   Use   Buffered   Stream   for   reading/writing.  
              bis   =   new   BufferedInputStream(new   FileInputStream(file));  
              bos   =   new   BufferedOutputStream(response.getOutputStream());  
   
              byte[]   buff   =   new   byte[2048];  
              int   bytesRead;  
              //   Simple   read/write   loop.  
              while(-1   !=   (bytesRead   =   bis.read(buff,   0,   buff.length)))   {  
                  bos.write(buff,   0,   bytesRead);  
              }  
              bos.flush();  
   
          }   finally   {  
              ...  
          }  
  Top

9 楼hornbilltofy()回复于 2005-04-02 16:07:23 得分 0

那就把文本文件的扩展名随便改成一个IE不认识的就可以了,比如把它压缩成rar文件.再说了IE接收后也可以另存为文本文件的.Top

10 楼LDH202(玲海)回复于 2005-04-02 18:28:12 得分 0

随便修改扩展名容易愚弄用户,  
   
  最好就是让所有的下载资源直接就是压缩包Top

11 楼disremember(disremember)回复于 2005-04-03 12:40:02 得分 0

如果你用tomcat5以上的话,可以通过配置tomcat的mime类型就可以,  
  就是修改web.xml设置来实现你要的。  
   
  具体方法是:  
  将你的web.xml配置文件中  
  <mime-mapping>  
        <extension>txt</extension>  
        <mime-type>text/plain</mime-type>  
  </mime-mapping>  
   
  修改为:  
  <mime-mapping>  
        <extension>txt</extension>  
        <mime-type>application/octet-stream</mime-type>  
  </mime-mapping>  
         
  Top

12 楼gekie(椰城闪客)回复于 2005-04-14 13:05:43 得分 0

upTop

13 楼tiannet(http://tiannet.yculblog.com)回复于 2005-04-14 13:55:08 得分 0

String   strFullPath   =   "文件存放的绝对路径";  
   
  java.io.File   objFile;   //文件对象    
  java.io.RandomAccessFile   objFileReader;  
  byte[]   byteBuffer   =   new   byte[4096];  
  int   intLength;   //实际读出的字符数(一个中文为一个字符)    
   
  //创建文件对象    
  objFile   =   new   java.io.File(strFullPath);  
   
  //判断文件是否存在    
  if(objFile.exists()){//文件存在  
  //获取文件长度  
  iFileSize   =   (int)objFile.length();  
   
  //设置HTTP输出头参数  
  response.setHeader("Content-Disposition",   "attachment;   filename="   +   new   String(strAffixName.getBytes("gb2312"),"ISO-8859-1"));  
  response.setHeader("Connection",   "close");  
  response.setHeader("Content-Type",   "application/octet-stream");    
  response.setContentLength(iFileSize);  
   
  //创建读文件对象    
  objFileReader   =   new   java.io.RandomAccessFile(objFile,"r");  
   
  //读文件内容  
  out.clear();  
   
  while((intLength   =   objFileReader.read(byteBuffer))   !=   -1){    
  //输出    
  out.write(new   String(byteBuffer,0,intLength,"ISO-8859-1"));  
  }    
   
  //关闭读文件对象    
  objFileReader.close();    
  }else{//文件不存在   contentType="text/html;charset=gb2312"  
  response.setHeader("contentType","text/html;charset=gb2312");  
  out.println("file   \""   +   strFullPath   +   "\"   not   exists!");    
  }Top

相关问题

  • 用ASP怎样下载文本文件?不用右健。急!
  • 怎样读文本文件?
  • 怎样取文本文件的数据?
  • 怎样显示文本文件?
  • 我怎样显示文本文件?
  • 救急!怎样读文本文件
  • 怎样修改一个文本文件?
  • 怎样存成文本文件?
  • 怎样合并文本文件
  • 怎样打开文本文件

关键词

  • 文件
  • 下载
  • 文本
  • 网页
  • 修改
  • 浏览器
  • application
  • 文本文件
  • objfilereader
  • objfile

得分解答快速导航

  • 帖主:apple058

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo