之前自己做的上传文件,可以上传上去,当上传.rar文件的时候,会出现我们电脑里用到的下载工具来进行下载,当你点确定下载的时候是可以下载的,但是当你点取消的时候,它会打开一个页面,里面全是乱码。这是为什么呢?急需。
在.jsp页面中我是这样写的:
   <a target="blank"  href="<%=".."+Commons.uploadDocDir+doc7%>"><%="成果"%></a>

解决方案 »

  1.   

    这个没有遇到过,不应该啊,别的文件可以上传的时候,rar的文件也应该是可以的
      

  2.   

    我以前也遇到过。点击下载时下载器拦截浏览器,当点取消时浏览器打开了rar文件。就像浏览器可以认的那种文件类型一样。比如txt文件就是这样。那时没法解决。就改用zip压缩了。就可以了。浏览器不打开zip文件了。我觉得还是浏览器的问题。他认为rar是可浏览的文件。
      

  3.   

    是浏览器的问题... 专门做个流来处理下载好了 。<jsp:useBean id="DBConnection" scope="page"
    class="com.hangzhoubank.client.PageBreak" />  是自己写的连接池 <%@page contentType="text/html;charset=utf-8"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@page language="java"%>
    <%@page import="java.util.*"%>
    <%@page import="java.net.*"%>
    <%@page import="java.io.*"%>
    <%@page session="false"%>
    <%@page import="java.sql.*"%>
          
          
     <jsp:useBean id="DBConnection" scope="page"
    class="com.hangzhoubank.client.PageBreak" />     
          <% 
    //关于文件下载时采用文件流输出的方式处理: 
    //加上response.reset(),并且所有的%>后面不要换行,包括最后一个; 
              String filedownload = "";
              String filedisplay = ""; 
              String realPath=request.getRealPath("/");
      String bookid=request.getParameter("bookid");
        if(!bookid.matches("^\\d{1,6}$")){
    bookid = "1";
     }
     String bookSql = "select * from cdt_book  where id="+bookid;
     ResultSet bookRs = DBConnection.executeQuery(bookSql); 
     while(bookRs.next()){
     filedownload=realPath+bookRs.getString("fileurl");
     filedisplay=bookRs.getString("fileurl");
     }
            //response.reset();//可以加也可以不加 
            response.setContentType("application/x-download"); 
            filedisplay = URLEncoder.encode(filedisplay,"UTF-8"); 
            response.addHeader("Content-Disposition","attachment;filename=" + filedisplay); 
            OutputStream outp = null; 
            FileInputStream in = null; 
               try 
                   { 
                    outp = response.getOutputStream(); 
                     in = new FileInputStream(filedownload); 
                     byte[] b = new byte[1024]; 
                     int j= 0; 
                     while((j = in.read(b)) > 0) 
                             { 
                         outp.write(b, 0, j); 
                             } 
                           
                       outp.flush(); 
                       out.clear(); 
                       out = pageContext.pushBody(); 
                      } 
                   catch(Exception e) 
               { 
                 // e.printStackTrace(); 
               } 
            finally 
         { 
                  if(in != null) 
                  { 
                      in.close(); 
                      in = null; 
                    } 
                 if(outp != null) 
                        { 
                      outp.close(); 
                      outp = null; 
                            } 
         } 
    %>