示例#1
0
        /// <summary>
        /// FTP 서버에 있는 원격 파일을 다운로드하여, <paramref name="localStream"/>에 씁니다.
        /// </summary>
        /// <param name="ftpClient"></param>
        /// <param name="remoteFilename"></param>
        /// <param name="localStream"></param>
        /// <returns></returns>
        public static Task <bool> DownloadTask(this FtpClient ftpClient, string remoteFilename, Stream localStream)
        {
            localStream.ShouldNotBeNull("localStream");

            if (IsDebugEnabled)
            {
                log.Debug("원격 파일을 다운로드 받는 작업을 생성합니다... remoteFilename=[{0}]", remoteFilename);
            }

            remoteFilename = ftpClient.AdjustRemoteFilename(remoteFilename);
            var uri = ftpClient.Hostname + remoteFilename;

            return
                (ftpClient
                 .GetResponseStreamTask(uri, WebRequestMethods.Ftp.DownloadFile)
                 .ContinueWith(task => {
                task.Result.CopyStreamToStream(localStream);
                task.Result.Close();

                if (IsDebugEnabled)
                {
                    log.Debug("원격 파일 다운로드가 완료되었습니다. remoteFilename=[{0}]", remoteFilename);
                }

                return true;
            },
                               TaskContinuationOptions.ExecuteSynchronously));
        }
示例#2
0
 /// <summary>
 /// 응답 스트림을 얻고, 문자열로 변환하여 반환합니다.
 /// </summary>
 /// <param name="ftpClient"></param>
 /// <param name="uri"></param>
 /// <param name="method"></param>
 /// <returns></returns>
 public static Task <string> GetResponseStringTask(this FtpClient ftpClient, string uri, string method)
 {
     return
         (ftpClient
          .GetResponseStreamTask(uri, method)
          .ContinueWith(task => {
         var result = task.Result.ToText();
         task.Result.Close();
         return result;
     },
                        TaskContinuationOptions.ExecuteSynchronously));
 }