NO  我不知道说什么啊。。什么都没有我们怎么说啊 。。

解决方案 »

  1.   

    public void  download(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         HttpSession session = request.getSession();
         UserInfo userInfo = (UserInfo)session.getAttribute("UserInfo");
         if(userInfo==null ){
             userInfo = new UserInfo();
         }
         if(userInfo.getUserCode().equals("")){
             userInfo.setErrorNum("4");
             session.setAttribute("UserInfo",userInfo);
             //response.sendRedirect("error");
             return;
         }
         String downFileName = request.getParameter("FILENAME");
         if(downFileName==null || downFileName.equals("")){
             userInfo.setErrorNum("5");
             session.setAttribute("UserInfo",userInfo);
             //response.sendRedirect("error");
             return;
         }
        response.setContentType( "application/octet-stream" ); // MIME type for pdf doc
        response.setHeader("Content-disposition", "attachment; filename=" +downFileName);
        File file = null;
        try{
           Properties prop = (Properties)getServletContext().getAttribute("property");
           String pathtemp = prop.getProperty("downloadpath");
           file = new File(pathtemp,downFileName);
           if(!file.exists()){
              userInfo.setErrorNum("6");
              session.setAttribute("UserInfo",userInfo);
              //response.sendRedirect("error");
              return;
           }
         }catch(Exception exc){exc.printStackTrace();}
         BufferedInputStream iin = new BufferedInputStream(new java.io.FileInputStream(file));;
         BufferedOutputStream dout = new BufferedOutputStream(response.getOutputStream());;
         try {
               byte[] buffer;
               int length = (new Long(file.length())).intValue();
               buffer = new byte[length];
               try{
               //传送数据
                  int once = 0;
                  int total = 0;
                  while ((total<length) && (once>=0)) {
                     once = iin.read(buffer,total,length);
                     total += once;
                     dout.write(buffer,0,length);
                  }
                  dout.flush();
                  userInfo.setErrorNum("8");
                  session.setAttribute("UserInfo",userInfo);
                  //response.sendRedirect("error");
              }catch(Exception ex){
                  userInfo.setErrorNum("7");
                  session.setAttribute("UserInfo",userInfo);
                  response.sendRedirect("error");
              }finally{
                  try{
                     if(iin!=null){   iin.close();}
                     if(dout!=null){  dout.close();}
                  }catch(Exception exc){exc.printStackTrace();}
              }
          }catch(Exception ex) {
                  userInfo.setErrorNum("7");
                  session.setAttribute("UserInfo",userInfo);
                  //response.sendRedirect("error");
          }
          //当下载完成后,想通过out.println()方法输出一段信息提示用户下载是否成功的字样,但服务器控制台上总是提示java.lang.IllegalStateException: response already committed异常,不知如何实现?
      }