360安全浏览器版体为:3.2正式版
下载代码为:private HttpServletResponse downLoadFun(HttpServletRequest request,
   HttpServletResponse response,String filepath){
  BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        OutputStream fos = null;
        InputStream fis = null;
  try{
    
          
        //如果是从服务器上取就用这个获得系统的绝对路径方法。  String filepath = servlet.getServletContext().getRealPath("/" + path);
          
          //String  filepath=path;
          //System.out.println("文件路径"+filepath);
          File uploadFile = new File(filepath);          
          fis = new FileInputStream(uploadFile);
          bis = new BufferedInputStream(fis);
          fos = response.getOutputStream();
          bos = new BufferedOutputStream(fos);
          //这个就就是弹出下载对话框的关键代码
          response.setCharacterEncoding("GBK");
          response.setContentType( "application/octet-stream ");          
          response.setHeader("Content-disposition",
                             "attachment;filename=" +
                             URLEncoder.encode(filepath, "utf-8"));
          int bytesRead = 0;
          //这个地方的同上传的一样。我就不多说了,都是用输入流进行先读,然后用输出流去写,唯一不同的是我用的是缓冲输入输出流
          byte[] buffer = new byte[8192];
          while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) {
              bos.write(buffer, 0, bytesRead);
          }
          bos.flush();
          fos.flush();         
          
          
          return response;
  }catch(Exception ex){
   ex.printStackTrace();
   return response;
  }finally{
   try{
    if (fis != null){
     fis.close();
    }
    if (bis != null){
      bis.close();
    }
    if (fos != null){
     fos.close();
    }
    if (bos != null){
      bos.close();
    }
   }catch(Exception exf){
    exf.printStackTrace();
   }
   
  }
 } 

解决方案 »

  1.   

    上传下载代码基本都一样,主要区别在于设置头信息,你试试这种:
    第一种:
    response.setCharacterEncoding("UTF-8");response.setHeader("Content-Disposition", "attachment; filename="+new String(jkjyfj.getFileName().getBytes("gb2312"),"ISO8859-1"));response.setContentType("application/msexcel");// 定义
    第二种:
    response.setContentType("application/x-msdownload");
    String s = "attachment; filename=" + new String(jkjyfj.getFileName().getBytes("gb2312"),"ISO8859-1"); response.setHeader("Content-Disposition", s); // 以上输出文件元信息
    response.setContentLength((int) filesize); 
    因为浏览器的差别会使我们的代码量加大
    第一种在360中可以实现下载但是在最原始的ie中不能实现
    第二种在原始额度ie中可是显示,但是在360等浏览器中不能实现
      

  2.   

    补充一下,我写的代码在IE ,xunlei下载都没有问题,,维一就360浏览器自带的下载工具有异常!!请高人说明一下.