jellcy 发表于 2013-2-1 12:54:53

java 下载

Java文件下载的几种方式
< type="text/javascript"> document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text"); if (text && text.length > 300) { text = text + "\r\n\n本文来自CSDN博客,转载请标明出处:" + location.href; clipboardData.setData("text", text); } }, 100); } }

   publicHttpServletResponse download(String path, HttpServletResponse response) {
         try{
             //path是指欲下载的文件的路径。
            File file=   newFile(path);
             //取得文件名。
            String filename=file.getName();
             //取得文件的后缀名。
            String ext=filename.substring(filename.lastIndexOf( " . " )+   1 ).toUpperCase();

             //以流的形式下载文件。
            InputStream fis=   newBufferedInputStream( newFileInputStream(path));
             byte [] buffer=   new   byte ;
            fis.read(buffer);
            fis.close();
             //清空response
            response.reset();
             //设置response的Header
            response.addHeader( " Content-Disposition " ," attachment;filename= "   +   newString(filename.getBytes()));
            response.addHeader( " Content-Length " ,""   +file.length());
            OutputStream toClient=   newBufferedOutputStream(response.getOutputStream());
            response.setContentType( " application/octet-stream " );
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
      }catch(IOException ex) {
            ex.printStackTrace();
      }
         returnresponse;
    }

   public   voiddownloadLocal(HttpServletResponse response)throwsFileNotFoundException {
         //下载本地文件
      String fileName=   " Operator.doc " .toString();//文件的默认保存名
         //读到流中
      InputStream inStream=   newFileInputStream( " c:/Operator.doc " ); //文件的存放路径
         //设置输出的格式
      response.reset();
      response.setContentType( " bin " );
      response.addHeader( " Content-Disposition " ," attachment; filename=\ ""+ fileName +" \ "" );
         //循环取出流中的数据
         byte [] b=   new   byte [ 100 ];
         intlen;
         try{
             while((len=inStream.read(b))>   0 )
                response.getOutputStream().write(b,0 , len);
            inStream.close();
      }catch(IOException e) {
            e.printStackTrace();
      }
    }

   public   voiddownloadNet(HttpServletResponse response)throwsMalformedURLException {
         //下载网络文件
         intbytesum=   0 ;
         intbyteread=   0 ;

      URL url=   newURL( " windine.blogdriver.com/logo.gif " );

         try{
            URLConnection conn=url.openConnection();
            InputStream inStream=conn.getInputStream();
            FileOutputStream fs=   newFileOutputStream( " c:/abc.gif " );

             byte [] buffer=   new   byte [ 1204 ];
             intlength;
             while((byteread=inStream.read(buffer))!=   - 1 ) {
                bytesum+=byteread;
                System.out.println(bytesum);
                fs.write(buffer,0 , byteread);
            }
      }catch(FileNotFoundException e) {
            e.printStackTrace();
      }catch(IOException e) {
            e.printStackTrace();
      }
    }

//支持在线打开文件的一种方式
   public   voiddownLoad(String filePath, HttpServletResponse response,booleanisOnLine)throwsException {
      File f=   newFile(filePath);
         if( ! f.exists()) {
            response.sendError( 404 ," File not found! " );
             return ;
      }
      BufferedInputStream br=   newBufferedInputStream( newFileInputStream(f));
         byte [] buf=   new   byte [ 1024 ];
         intlen=   0 ;

      response.reset();//非常重要
         if(isOnLine) {//在线打开方式
            URL u=   newURL( " file:/// "   +filePath);
            response.setContentType(u.openConnection().getContentType());
            response.setHeader( " Content-Disposition " ," inline; filename= "   +f.getName());
             //文件名应该编码成UTF-8
      }else{//纯下载方式
            response.setContentType( " application/x-msdownload " );
            response.setHeader( " Content-Disposition " ," attachment; filename= "   +f.getName());
      }
      OutputStream out=response.getOutputStream();
         while((len=br.read(buf))>   0 )
            out.write(buf,0 , len);
      br.close();
      out.close();
    }


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/seng3018/archive/2010/02/22/5316178.aspx
页: [1]
查看完整版本: java 下载