CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

jsp实现文件的下载功能

楼主ai5173609()2006-12-01 22:53:13 在 Java / Web 开发 提问

我用下面的代码来实现文件的下载,当下载中文名的文件时,下载文件内容是对的,可是文件名为"CAVB6F65..htm",而原来的名字是"新建.txt",怎么保存为原来的名字呢,而且下载后点击打开它都用IE打开,而如果文件名不为中文名时,下载的默认文件名就是原来的,而且打开也是默认,就是说如果原来的是txt文件它就用notepad打开,如果是htm就是IE打开,为什么呢,怎么改呢,先谢谢了.用这个连接下载<a   href="download.jsp?file=1.txt&downloadFlag=1">下载</a>代码如下:  
  download.jsp  
  <%@page   contentType="text/html;   charset=EUC-JP"   language="java"   %>  
  <%@page   import="java.util.*"%>  
  <%@page   import="java.io.*"%>  
  <%@page   import="java.net.*"%>  
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.01//EN"   "http://www.w3.org/TR/html4/strict.dtd">  
  <%     String   fileName="";  
          if   (request.getParameter("file")   !=   null)   {  
                  fileName   =   request.getParameter("file");  
  fileName=new   String(fileName.getBytes("iso8859-1"),"gb2312");  
          }  
    if("1".equals(request.getParameter("downloadFlag"))){//downloadFlag为1时为下载文件  
        response.setHeader("Content-disposition","attachment;   filename="+new   String(fileName.getBytes("iso8859-1"),"gb2312"));  
          }else   if("0".equals(request.getParameter("downloadFlag"))){//downloadFlag为0时为用指定的程序打开文件  
        response.setContentType("application/ms-word");  
    }//downloadFlag为其他值时用IE默认的方式打开文件  
          BufferedInputStream   bis   =   null;  
          BufferedOutputStream   bos   =   null;  
          try   {  
                  bis   =   new   BufferedInputStream(new   FileInputStream(getServletContext().getRealPath(""   +   fileName)));  
                  bos   =   new   BufferedOutputStream(response.getOutputStream());  
   
                  byte[]   buff   =   new   byte[2048];  
                  int   bytesRead;  
   
                  while(-1   !=   (bytesRead   =   bis.read(buff,   0,   buff.length)))   {  
                          bos.write(buff,0,bytesRead);  
                  }  
   
          }   catch(final   IOException   e)   {  
                  System.out.println   (   "IOException."   +   e   );  
   
          }   finally   {  
                  if   (bis   !=   null)  
                          bis.close();  
                  if   (bos   !=   null)  
                          bos.close();  
          }  
  %>  
   
  问题点数:10、回复次数:3Top

1 楼iwlk(http://www.ChinaFedora.cn/ fedora论坛)回复于 2006-12-02 10:36:40 得分 5

把      
    response.setHeader("Content-disposition","attachment;   filename="+new   String(fileName.getBytes("iso8859-1"),"gb2312"));  
   
  改为  
   
    response.setHeader("Content-disposition","attachment;   filename="+java.net.URLEncoder.encode("新建.txt","UTF-8"));  
  Top

2 楼ai5173609()回复于 2006-12-03 22:54:24 得分 0

像你说的一样的话,好像不能解决问题啊,再说它也缺乏通用性,每设一个下载文件就要专门为它配一个这种文件,岂不麻烦,还有没有好的办法啊,兄弟在此先谢谢了Top

3 楼huantianxidi(欢天喜地)回复于 2006-12-04 10:38:10 得分 5

smartupload.jar   你使用这个就行了.别自己写了.怪费劲的.Top

相关问题

关键词

得分解答快速导航

  • 帖主:ai5173609
  • iwlk
  • huantianxidi

相关链接

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

广告也精彩

反馈

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