雅典之夏的小站
知人者智 自知者明 Fighting!!
一直以来,认为实现这种上传要比下载简单的多,可是等到真正去实现的时候,才发现原来挺麻烦的
遇到的问题有:
      1中文文件名的问题。

      2文件没有下载提示直接就打开,包括rar的。

就这么两个小问题却让我花了三天的时间,不得不汗一下我的效率。

      首先来说中文链接的问题,tomcat默认是不支持中文URL的,但是可以在Sever.xml中把 Connector 的属性加上一条:   URIEncoding="GBK";然后在传递之前,链接的中文还要先encode一下
例如:java.net.URLEncoder.encode(“测试.txt”);   这样中文就会变成%D%F之类的,总之就可以正常传递了。
      而关于点击文件直接就打开了是比较郁闷,查找了些资料,也试了网上的一些方法,一直不行
,最后采用的文件流的方式,才顺利解决。代码大致如下:


while(rs.next()){
  try{
  OutputStream o=response.getOutputStream();
  byte b[]=new byte[500];
  filename=rs.getString("filename");//rs.为从数据库查找到的结果集
  filename=java.net.URLEncoder.encode(filename).trim();
  File file=new File("d:/upload/20060221/",rs.getString("filename"));
  //
  response.setHeader("Content-Disposition","attachment; filename="+filename); 
  response.setContentType("APPLICATION/OCTET-STREAM");
     long fileLength=file.length();
     String length=String.valueOf(fileLength);
     response.setHeader("Content_Length",length);
     java.io.FileInputStream in = new java.io.FileInputStream(file);
  int n=0;
   while ((n=in.read(b)) != -1) {
     o.write(b,0,n);
   }
   in.close();
  o.close();
  }catch(Exception e){
   System.out.print(e);
  }
 }
 rs.close();
       
这样的话,中英文文件都能正常下载并使用,但是中文文件用Ie直接下载下来后文件名还是乱码,用下载工具则一切正常。
posted on 2006-02-21 15:58 rkind 阅读(253) 评论(0)  编辑  收藏 所属分类: JSP&Servlet

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


网站导航: