`
chengjiachen
  • 浏览: 9094 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

FTPClient 下载文件

 
阅读更多
   
    /**
     * 下载文件到指定目录
     * @param filePath String
     * @param response HttpServletResponse
     * @throws ApplicationException
     */
    public void downloadFileToClient(String fileName,String webDirectoryAndFileName) throws Exception{
       FTPClient ftpClient = new FTPClient();

       InputStream is = null;
       FileOutputStream os = null;
      
       try {
          /*建立连接*/
       server = SystemParameter.getParameterValue("SYS_IDC_FTP_HOST");
           user = SystemParameter.getParameterValue("SYS_IDC_FTP_USER");
           password = SystemParameter.getParameterValue("SYS_IDC_FTP_PASSWORD");
          port = SystemParameter.getParameterValue("SYS_IDC_FTP_PORT");
          String workHome = SystemParameter.getParameterValue("SYS_IDC_FTP_WORK_HOME");
          ftpClient.connect(server);
          ftpClient.login(user, password); 

          String remoteFileName = workHome+"/"+fileName;
        
          boolean Flag= findName(remoteFileName);
          if(!Flag)
          {
             throw new ApplicationException("没找到您所下载的文件,请检查文件名是否正确");
          }
          // 设置文件的传输类型,默认是ASCII,修改为二进制 
          ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
          ftpClient.enterLocalPassiveMode(); 
         
          is = ftpClient.retrieveFileStream(remoteFileName); 
          File outfile = new File(webDirectoryAndFileName);
          os = new FileOutputStream(outfile);
         
          byte[] bytes = new byte[1024];
          int c;
          while ((c = is.read(bytes)) > 0)
          {
              os.write(bytes, 0, c);
          }
    
       } catch (IOException e) {
           e.printStackTrace();
           throw new RuntimeException("FTP客户端出错!", e);
       }
      finally
      {
    if (is != null)
    is.close();
    if (os != null)
    os.close();
         ftpClient.logout();
         ftpClient.disconnect();
      }

    }

-------------
/**
     * 下载文件
     * @param filePath String
     * @param response HttpServletResponse
     * @throws ApplicationException
     */
    public void downloadFile(String fileName,OutputStream out) throws Exception{
       FTPClient ftpClient = new FTPClient();

       try {
          /*建立连接*/
       server = SystemParameter.getParameterValue("SYS_IDC_FTP_HOST");
           user = SystemParameter.getParameterValue("SYS_IDC_FTP_USER");
           password = SystemParameter.getParameterValue("SYS_IDC_FTP_PASSWORD");
          port = SystemParameter.getParameterValue("SYS_IDC_FTP_PORT");
          String workHome = SystemParameter.getParameterValue("SYS_IDC_FTP_WORK_HOME");
          ftpClient.connect(server);
          ftpClient.login(user, password); 
          String remoteFileName = workHome+"/"+fileName;
          
          boolean Flag= findName(remoteFileName);
           if(!Flag)
           {
              throw new ApplicationException("没找到您所下载的文件,请检查文件名是否正确");
           }
           //设置文件类型(二进制)
           ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
           ftpClient.retrieveFile(remoteFileName, out);
          
       } catch (IOException e) {
           e.printStackTrace();
           throw new RuntimeException("FTP客户端出错!", e);
       }
      finally
      {
         ftpClient.logout();
         ftpClient.disconnect();
      }

    }
--------

   /**
    * 建立FTP连接
    * @param server String
    * @param user String
    * @param password String
    * @param path String
    */
   private void connectServer(String server,String user,String password,String port) throws Exception{
      ftpClient = new FTPClient();
       try {    
          if(port!=null && port.length()>0)
          {
           int ftpPort = Integer.parseInt(port);
         
           ftpClient.connect(server,ftpPort);
           int reply = ftpClient.getReplyCode();
           if(!FTPReply.isPositiveCompletion(reply)) {
               ftpClient.disconnect();
               throw new Exception("ftp 服务器拒绝连接");
           }
           ftpClient.login(user,password);
           log.info("你已成功连接到"+server+"服务器"+"\n");
           log.info("端口是"+ftpPort+"\n");     
          }
       } catch (IOException ex) {
           throw new Exception(ex);
       }
   }

   /**
    * 关闭连接
    * @throws ApplicationException
    */
   private void closeConnect() throws ApplicationException{
    try {
        ftpClient.logout();
        ftpClient.disconnect();
        log.info("正常退出文件服务器");
    } catch (IOException ex) {
        throw new ApplicationException(ex);
    }
   }


------
  /**
    * 上传文件
    * @param uploadFile File
    * @param outputPath String
    * @return boolean
    * @throws ApplicationException
    */
   public void fileUpload(String path,String outPutName) throws Exception{

      FTPClient ftpClient = new FTPClient();
      FileInputStream fis = null;

      try {
         /*建立连接*/
         server = SystemParameter.getParameterValue("SYS_IDC_FTP_HOST");
         if(server==null || "".equals(server)){
        server = "**";
         }
         user = SystemParameter.getParameterValue("SYS_IDC_FTP_USER");
         if(user==null || "".equals(user)){
        user = "**";
         }
         password = SystemParameter.getParameterValue("SYS_IDC_FTP_PASSWORD");
         if(password==null || "".equals(password)){
        password = "**";
         }
         port = SystemParameter.getParameterValue("SYS_IDC_FTP_PORT");
         if(port==null || "".equals(port)){
        port = "21";
         }
         String workHome = SystemParameter.getParameterValue("SYS_IDC_FTP_WORK_HOME");
         if(workHome==null || "".equals(workHome)){
        workHome = "/idcfile2";
         }
         ftpClient.connect(server,Integer.valueOf(port));
         ftpClient.login(user, password);

          File srcFile = new File(path);
          fis = new FileInputStream(srcFile);
          //设置文件类型(二进制)
          ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
          //String currentPath = creatOutputPath(outPutName);
          String currentPath = workHome+"/"+outPutName;
          ftpClient.changeWorkingDirectory(path);
          ftpClient.storeFile(currentPath, fis);
          fis.close();
          ftpClient.logout();
          ftpClient.disconnect();
      } catch (IOException e) {
          e.printStackTrace();
          throw new RuntimeException("FTP客户端出错!", e);
      }
   }
分享到:
评论

相关推荐

    用org.apache.commons.net.ftp.FTPClient包实现简单文件下载

    在本文中,我们将深入探讨如何使用`org.apache.commons.net.ftp.FTPClient`包来实现简单的文件下载功能。这个过程涉及到几个关键步骤,包括连接到FTP服务器、登录、设置传输模式、下载文件以及断开连接。 首先,你...

    使用FTPClient实现文件的上传下载

    这篇博客“使用FTPClient实现文件的上传下载”显然关注的是如何利用编程接口FTPClient来执行FTP操作,如上传和下载文件。FTPClient是Apache Commons Net库的一部分,它为Java开发者提供了方便的API来实现FTP功能。 ...

    利用ftpclient下载文件,解决用window.open打开ftp地址中有中文,不能下载的问题

    ### 使用FTPClient下载文件并解决含有中文路径的问题 在日常工作中,我们经常需要与服务器进行文件传输操作。其中,FTP(File Transfer Protocol)是最常见的文件传输协议之一。然而,在实际使用过程中,尤其是涉及到...

    java利用FTPClient实现上传下载文件.doc

    Java 中使用 FTPClient 实现上传下载文件 Java 中使用 FTPClient 实现上传下载文件是 Java 程序中经常需要和 FTP 打交道的重要内容。FTPClient 是 Jakarta Commons 中的一个工具类,位于 Commons Net 包中。...

    java FTPClient 文件上传下载文件

    ### Java FTPClient 文件上传下载知识点详解 #### 一、引言 在现代软件开发中,文件传输是一项基本而重要的功能。对于Java开发者来说,利用Java的FTPClient进行文件的上传和下载是常见的需求之一。本篇文章将围绕...

    org.apache.commons.net.ftp.FTPClient FTP工具类,实现上传、下载、压缩到输出流下载等功能

    org.apache.commons.net.ftp.FTPClient FTP工具类,实现上传、下载、压缩到输出流下载等功能

    ftpclient 文件上传、下载、删除

    FTPClient是Java中实现FTP功能的一个库,它提供了丰富的API,使得开发者能够方便地与FTP服务器进行交互,包括上传、下载和删除文件。在这个项目中,我们将会深入探讨如何使用FTPClient来完成这些操作。 首先,要...

    使用C#.NET实现FTP文件下载

    使用BackgroundWorker 实现文件下载、异步提示 准备做一个可视化的WinForm界面,这就需要反映文件下载进度,要达到这个实时报告进度的功能,就需要进行异步操作,可以通过线程或BackgroundWorker 类去实现, 由于...

    ftpclient

    4. **文件上传与下载**:这是FTP的主要用途,FTPClient提供了上传本地文件到服务器,以及从服务器下载文件到本地的功能。 5. **数据传输模式**:FTP有两种数据传输模式,主动(PORT)模式和被动(PASV)模式。...

    java编写的ftpclient,用于向ftp发送、获取文件

    Java编写的FTPClient是用于与FTP(文件传输协议)服务器交互的一个客户端程序,它使得开发者能够在Java应用程序中实现上传和下载文件的功能。FTP是互联网上一个标准的服务,它允许用户在计算机之间传输文件,通常...

    JAVA中使用FTPClient上传下载.doc

    在Java程序中,使用FTPClient可以方便地实现文件的上传和下载。 2. **FTP文件上传**: - 首先,通过`FTPClient.connect()`方法建立与FTP服务器的连接。连接时可以指定主机名(URL)和端口号。默认FTP端口是21,如果...

    使用ftpClient下载ftp上所有文件解析

    在本文中,我们将深入探讨如何使用Java的`FTPClient`库来实现从FTP服务器下载所有文件及子目录的功能。这个任务的关键在于实时性、文件结构的保持以及递归遍历FTP目录。首先,我们需要理解`FTPClient`的基本操作,如...

    JAVA中使用FTPClient上传下载

    在Java中使用FTPClient进行文件上传与下载是一个常见的需求,特别是在需要远程管理文件或数据交换的场景下。本文将深入探讨如何使用Java中的FTPClient库实现这一功能,并提供详细的代码示例与解释。 ### FTPClient...

    Delphi XE3使用ICS的FTPClient从FTP服务器下载文件

    Delphi XE3使用ICS的FTPClient从FTP服务器下载文件,本人用来实现客户端软件自动升级功能,提供从FTP下载文件的源码供大家参考。之前用的IdFTP连接服务器经常出现10054错误,参考网上的意见使用ICS的FTPClient解决了...

    FtpClient FTP 操作类

    除了基本的上传和下载,`FtpClient`还提供了其他功能,如文件列表查询、目录操作、文件属性获取与修改、断点续传、文件权限管理等。例如,我们可以使用`GetListing`获取远程目录的文件列表,使用`CreateDirectory`...

    调用FtpClient类上传文件(java)

    此外,`FtpClient`还提供了许多其他功能,如获取文件列表、修改文件权限等。确保根据具体需求调整和扩展上述代码。 总结一下,使用`FtpClient`类在Java中上传文件涉及到以下关键步骤: 1. 引入Apache Commons Net库...

    System.Net.FtpClient

    System.Net.FtpClient是一个用于C#编程中的FTP客户端库,其主要功能是提供方便、强大的FTP文件上传和下载能力。这个库编译后生成的System.Net.FtpClient.dll文件,为开发者提供了与FTP服务器交互的接口,极大地简化...

    C# 文件上传、带进度(FTP类)

    功能描述: 建立FTP链接 支持代理 多种重载的同步上传文件 多种重载的异步上传文件 多种重载的同步下载文件 多种重载的异步下载文件 上传文件的进度百分比 下载文件的进度白分比 有区分...

    FTPClient上传下载(支持断点续传)

    总之,`FTPClient`不仅提供了基本的文件上传和下载功能,还通过支持断点续传等高级特性,大大增强了文件传输的可靠性和效率。对于需要频繁与FTP服务器交互的应用程序而言,熟练掌握`FTPClient`的使用是非常有必要的...

    java ftp 下载 源程序 FTPClient

    下面将详细阐述Java FTP下载的基本原理、FTPClient库的使用方法以及如何实现FTP文件下载。 FTP是一种标准的网络协议,用于在客户端和服务器之间进行文件传输。在Java中,我们可以使用`java.net.Socket`和`java.io`...

Global site tag (gtag.js) - Google Analytics