posts - 11,comments - 17,trackbacks - 0
          import ?java.io.InputStream;
          import ?java.util.Properties;

          import ?org.apache.commons.net.ftp.FTPClient;
          import ?org.apache.commons.net.ftp.FTPClientConfig;
          import ?org.apache.commons.net.ftp.FTPReply;
          import ?org.uranus.util.StringUtils;

          /**
          *?基于apache組織的commonNet開源組件實現ftp客戶端<br>
          *?本程序運行依賴于一個config成員變量屬性,其是一個屬性(Properties)對象<br>
          *?系統要求這個config對象,必需有如下屬性key:<br>
          *?server(ftp服務器ip地址或域名)<br>
          *?username(登錄用戶名)<br>
          *?password(登錄密碼)<br>
          *?如下屬性key是可選的:<br>
          *?systemKey(ftp服務器的操作系統key,如window)<br>
          *?serverLanguageCode(ftp服務器使用的語言,如zh)<br>
          *?<br>
          *?本程序是線程安全,在每一個上傳時都將創建ftp連接,上傳結束后再關閉ftp連接<br>
          *
          *?例子:<br>
          *?InputStream?localIn?=?new?FileInputStream("c:\\計算機.txt");<br>
          *
          *?java.util.Properties?config?=?new?Properties();<br>
          *?config.setProperty("server",?"192.168.5.120");<br>
          *?config.setProperty("username",?"upload");<br>
          *?config.setProperty("password",?"upload");<br>
          *
          *?FtpClientCommonNetImpl?client?=?new?FtpClientCommonNetImpl();<br>
          *?client.setConfig(config);<br>
          *?client.upload(localIn,?"/aaa/計算機.txt",?true);<br>
          *
          *
          *?
          @author ?zhangdb
          *
          */

          public ? class ?FtpClientCommonNetImpl? implements ?IFtpClient? {
          // ?ftp配置
          private ?Properties?config;

          /**
          *?連接到ftp服務器
          *
          *?
          @param ?server
          *?
          @param ?userName
          *?
          @param ?password
          *?
          @return
          *?
          @throws ?FtpException
          */

          protected ?FTPClient?connectFtpServer(String?server,?String?userName,
          String?password)?
          throws ?FtpException? {
          // ?創建ftp客戶端對象
          FTPClient?ftp? = ? new ?FTPClient();
          try ? {
          ftp.configure(
          this .getFTPClientConfig());
          // ?連接ftp服務器
          ftp.connect(server);
          // ?登錄
          ftp.login(userName,?password);

          // ?返回值
          int ?reply? = ?ftp.getReplyCode();
          if ?(( ! FTPReply.isPositiveCompletion(reply)))? {
          ftp.disconnect();
          throw ? new ?FtpException( " 登錄ftp服務器失敗,請檢查server[ " ? + ?server
          + ? " ]、username[ " ? + ?userName? + ? " ]、password[ " ? + ?password
          + ? " ]是否正確! " );
          }


          return ?ftp;
          }
          ? catch ?(Exception?ex)? {
          throw ? new ?FtpException(ex);
          }

          }


          /**
          *?關閉連接
          *
          *?
          @param ?ftp
          */

          protected ? void ?disconnectFtpServer(FTPClient?ftp)? {
          try ? {
          ftp.logout();
          ftp.disconnect();
          }
          ? catch ?(Exception?ex)? {
          throw ? new ?FtpException(ex);
          }

          }


          /**
          *?上傳
          */

          public ? void ?upload(InputStream?localIn,?String?remoteFilePath)
          throws ?FtpException? {
          String?server?
          = ? this .config.getProperty( " server " );
          String?userName?
          = ? this .config.getProperty( " username " );
          String?password?
          = ? this .config.getProperty( " password " );
          FTPClient?ftp?
          = ? this .connectFtpServer(server,?userName,?password);

          try ? {
          boolean ?result? = ?ftp.storeFile( this
          .enCodingRemoteFilePath(remoteFilePath),?localIn);
          if ?( ! result)? {
          throw ? new ?FtpException( " 文件上傳失敗! " );
          }

          }
          ? catch ?(Exception?ex)? {
          throw ? new ?FtpException(ex);
          }
          ? finally ? {
          this .disconnectFtpServer(ftp);
          }

          }


          /**
          *?上傳結束以后關閉輸入流
          *
          *?
          @param ?localIn
          *?
          @param ?remoteFilePath
          *?
          @param ?afterUploadCloseInputStream
          *?
          @throws ?FtpException
          */

          public ? void ?upload(InputStream?localIn,?String?remoteFilePath,
          boolean ?afterUploadCloseInputStream)? throws ?FtpException? {
          try ? {
          // ?上傳
          this .upload(localIn,?remoteFilePath);
          }
          ? finally ? {
          if ?(afterUploadCloseInputStream)? {
          if ?(localIn? != ? null )? {
          try ? {
          localIn.close();
          }
          ? catch ?(Exception?ex)? {
          throw ? new ?FtpException(ex);
          }

          }

          }

          }

          }


          /**
          *?得到配置
          *
          *?
          @return
          */

          protected ?FTPClientConfig?getFTPClientConfig()? {
          // ?創建配置對象
          FTPClientConfig?conf? = ? new ?FTPClientConfig( this .config.getProperty(
          " systemKey " ,?FTPClientConfig.SYST_NT));
          conf.setServerLanguageCode(
          this .config.getProperty(
          " serverLanguageCode " ,? " zh " ));
          return ?conf;
          }


          /**
          *?遠程文件路徑編碼(上傳到ftp上的文件路徑)
          *
          *?
          @param ?remoteFilePath
          *?
          @return
          */

          protected ?String?enCodingRemoteFilePath(String?remoteFilePath)? {
          return ?StringUtils.gbkToIso8859EnCoding(remoteFilePath);
          }


          public ?Properties?getConfig()? {
          return ?config;
          }


          public ? void ?setConfig(Properties?config)? {
          this .config? = ?config;
          }


          }
          ?
          posted on 2007-03-28 19:42 Ken.Lee 閱讀(1061) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 琼结县| 博湖县| 恩平市| 上蔡县| 德令哈市| 恭城| 滨海县| 红河县| 宝坻区| 新邵县| 永兴县| 顺平县| 含山县| 邵武市| 古田县| 永修县| 新绛县| 安龙县| 内乡县| 漾濞| 宣威市| 长泰县| 育儿| 双牌县| 呼图壁县| 武隆县| 彰化市| 大田县| 泾川县| 明水县| 綦江县| 河北区| 托克托县| 滨州市| 恭城| 苗栗县| 时尚| 甘肃省| 屏东市| 固原市| 泾川县|