/// <summary>
        /// Put a file on a FTP server
        /// </summary>
        public void FtpPutFile(string source, string destination, CustomFtpGetRequest ftpGetRequest)
        {
            if (ftpGetRequest == null)
            {
                ftpGetRequest = FtpGetRequest;
            }
            FtpWebRequest request = ftpGetRequest(destination, WebRequestMethods.Ftp.UploadFile);

            byte[] fileContents = File.ReadAllBytes(source);
            using (Stream requestStream = request.GetRequestStream())
            {
                requestStream.Write(fileContents, 0, fileContents.Length);
            }
            request.GetResponse();
        }
예제 #2
0
        /// <summary>
        /// Read a file from a FTP server
        /// </summary>
        public string FtpReadFile(string source, CustomFtpGetRequest ftpGetRequest)
        {
            if (ftpGetRequest == null)
            {
                ftpGetRequest = FtpGetRequest;
            }
            FtpWebRequest  request  = ftpGetRequest(source, WebRequestMethods.Ftp.DownloadFile);
            FtpWebResponse response = (FtpWebResponse)request.GetResponse();

            Stream       responseStream = response.GetResponseStream();
            StreamReader reader         = new StreamReader(responseStream);
            var          result         = reader.ReadToEnd();

            reader.Close();
            response.Close();

            return(result);
        }
        /// <summary>
        /// True if the file exists on the server
        /// </summary>
        public bool FtpFileExists(string destination, CustomFtpGetRequest ftpGetRequest)
        {
            if (ftpGetRequest == null)
            {
                ftpGetRequest = FtpGetRequest;
            }
            FtpWebRequest request = ftpGetRequest(destination, WebRequestMethods.Ftp.GetFileSize);

            try
            {
                request.GetResponse();
            }
            catch
            {
                return(false);
            }
            return(true);
        }
예제 #4
0
        /// <summary>
        /// True if the directory exists on the server
        /// </summary>
        public bool FtpDirectoryExists(string destination, CustomFtpGetRequest ftpGetRequest)
        {
            if (ftpGetRequest == null)
            {
                ftpGetRequest = FtpGetRequest;
            }
            FtpWebRequest request = ftpGetRequest(destination, WebRequestMethods.Ftp.ListDirectory);

            try
            {
                var response = request.GetResponse();
                response.Close();
            }
            catch
            {
                return(false);
            }
            return(true);
        }
예제 #5
0
        /// <summary>
        /// Put directories and file to an FTP Server
        /// </summary>
        public void FtpPutDirectory(string source, string destination, bool recursive, ReportExecutionLog log, CustomFtpGetRequest ftpGetRequest, string searchPattern = "*")
        {
            if (ftpGetRequest == null)
            {
                ftpGetRequest = FtpGetRequest;
            }

            if (!FtpDirectoryExists(destination, ftpGetRequest))
            {
                if (log != null)
                {
                    log.LogMessage("Creating remote directory: " + destination);
                }
                var request  = ftpGetRequest(destination, WebRequestMethods.Ftp.MakeDirectory);
                var response = request.GetResponse();
                response.Close();
            }

            foreach (string file in Directory.GetFiles(source, searchPattern))
            {
                try
                {
                    var destinationFile = Path.Combine(destination, Path.GetFileName(file)).Replace("\\", "/");
                    if (log != null)
                    {
                        log.LogMessage("Copy '{0}' to '{1}'", file, destinationFile);
                    }
                    FtpPutFile(file, destinationFile, ftpGetRequest);
                }
                catch (Exception ex)
                {
                    if (log != null)
                    {
                        log.LogMessage(ex.Message);
                    }
                }
            }

            if (recursive)
            {
                foreach (string directory in Directory.GetDirectories(source))
                {
                    FtpPutDirectory(directory, Path.Combine(destination, Path.GetFileName(directory)).Replace("\\", "/"), recursive, log, ftpGetRequest, searchPattern);
                }
            }
        }