日期:2014-05-19  浏览次数:20657 次

我用java写了一段文件下载代码,最后下载的时候发现了一个古怪的问题,在线求指导!
RT:昨天写了个文件下载的代码,在我电脑上测试的时候是好后的,可是今天客户打电话说,他不能下载,我纠结了半天不知道哪里出错了,后来基诺多台电脑测试发现一个问题,那就是这个下载只能用IE浏览器自带的下载器下载,不能用迅雷,或者是360,还是其他的下载器下载。在线求指导,这个怎么解决!
------最佳解决方案--------------------
说实话,看不出来什么问题,你试试把response.setContentType("application/x-download"); 改成response.setContentType("application/force-download"); 
------其他解决方案--------------------
没代码,没错误,解决什么
------其他解决方案--------------------
引用:
没代码,没错误,解决什么
同问。
------其他解决方案--------------------
引用:
没代码,没错误,解决什么



try
  {
   request.setCharacterEncoding("utf-8");
   response.setCharacterEncoding("utf-8");                  
   String name=request.getParameter("name");
   String fname=request.getParameter("filename");
   System.out.println(name+"文件名");
   System.out.println(fname+"文件夹");

      String webpath=request.getSession().getServletContext().getRealPath("")+"/"+"manage_file"+"/"+"public_space/";
      String savePath=webpath+fname;
           response.setContentType("application/x-download");
          String filenamedownload = savePath + "/" + name;
       String filenamedisplay = name;
          
     filenamedisplay = URLEncoder.encode(filenamedisplay, "UTF-8");
     response.setHeader("Content-Disposition", "attachment;filename="+ filenamedisplay);
     try {
      OutputStream os = response.getOutputStream();
      FileInputStream fis = new FileInputStream(filenamedownload);
      byte[] b = new byte[1024];
      int i = 0;
      while ((i = fis.read(b)) > 0) {
       os.write(b, 0, i);
      }
      fis.close();
      os.flush();
      os.close();
     } 
     catch (Exception e) 
     {
      e.printStackTrace();
     }
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }









------其他解决方案--------------------
错误就是用其他的下载器下载   System.out.println(name+"文件名");    System.out.println(fname+"文件夹"); 这两句输出为null 。空指针异常
------其他解决方案--------------------
引用: