예제 #1
0
        //public void DownloadOrders()
        //{
        //    _downloadedOrders = DownloadFiles(GetFtpOrders(), DirDownloadOrders);
        //}

        //public void DownloadPayments()
        //{
        //    _downloadedPayments = DownloadFiles(GetFtpPayments(), DirDownloadPayments);
        //}

        public void ListFtpFiles(FTPdirectory files)
        {
            foreach (var file in files)
            {
                Console.WriteLine(file.FullName + " " + file.Permission + " " + file.Filename);
            }
        }
예제 #2
0
        private IEnumerable <string> getFileNamesRecursively(string folder)
        {
            FTPdirectory folders = null;

            try
            {
                folders = client.ListDirectoryDetail(folder);
            }
            catch (WebException ex)
            {
                //550 errors are likely.
                //TODO: Log error.
                return(new List <string>());
            }
            List <string> files = new List <string>();

            foreach (var file in folders.GetFiles())
            {
                files.Add(file.FullName);
            }

            foreach (var dir in folders.GetDirectories())
            {
                files = files.Concat(getFileNamesRecursively(dir.FullName)).ToList();
            }

            return(files);
        }
예제 #3
0
        public FTPdirectory GetFtpFiles(Uri Host, string ext = "")
        {
            FTPclient ftp = new FTPclient(Host.AbsoluteUri, FtpUser, FtpPassword);

            ftp.UsePassive = true;
            FTPdirectory ftpDir = ftp.ListDirectoryDetail();

            return(ftpDir.GetFiles(""));
        }
예제 #4
0
        public List<FileInfo> DownloadFiles(FTPdirectory files, string dowloadDir)
        {
            List<FileInfo> downloadedFiles = new List<FileInfo>();
            foreach (var file in files)
            {
                if (file.FileType == FTPfileInfo.DirectoryEntryTypes.File)
                {
                    string filePath = Path.Combine(dowloadDir, file.Filename);
                    FileInfo targFile = new FileInfo(filePath);

                    //FTPclient ftp = new FTPclient(Host.AbsoluteUri, FtpUser, FtpPassword);
                    //                    ftp.Download(file, targFile, true);

                    FileInfo newFile = new FileInfo(filePath);
                    downloadedFiles.Add(newFile);
                }
            }
            return downloadedFiles;
        }
예제 #5
0
        public List <FileInfo> DownloadFiles(FTPdirectory files, string dowloadDir)
        {
            List <FileInfo> downloadedFiles = new List <FileInfo>();

            foreach (var file in files)
            {
                if (file.FileType == FTPfileInfo.DirectoryEntryTypes.File)
                {
                    string   filePath = Path.Combine(dowloadDir, file.Filename);
                    FileInfo targFile = new FileInfo(filePath);

                    //FTPclient ftp = new FTPclient(Host.AbsoluteUri, FtpUser, FtpPassword);
                    //                    ftp.Download(file, targFile, true);

                    FileInfo newFile = new FileInfo(filePath);
                    downloadedFiles.Add(newFile);
                }
            }
            return(downloadedFiles);
        }
예제 #6
0
        private void AddFileData(string path)
        {
            const int MaxTries = 3;

            FTPdirectory ftpDir = new FTPdirectory();

            // If the path is //. or //.. don't store it
            if (path.EndsWith("."))
            {
                return;
            }

            // Looks like we're getting some random timeout failures.  Putting in this loop
            // so we'll retry a couple times before giving up.
            for (int numTries = 0; numTries < MaxTries; numTries++)
            {
                try
                {
                    // Get all the files and directories in this directory
                    ftpDir = ftpClient.ListDirectoryDetail(path);

                    // If we didn't get an exception, get out of this loop
                    break;
                }
                catch (WebException exc)
                {
                    // If we've tried a lot already, give up
                    if (numTries >= MaxTries - 1)
                    {
                        throw exc;
                    }
                    else
                    {
                        // Wait a little while and try again.
                        Thread.Sleep(1000);
                    }
                }
            }

            // Store each of the files in this directory
            ftpDir.GetFiles("").ForEach(new Action<FTPfileInfo>(StoreFiles));

            // Recursively call this function on
            ftpDir.GetDirectories().ForEach(new Action<FTPfileInfo>(AddFileData));
        }
예제 #7
0
 //public void DownloadOrders()
 //{
 //    _downloadedOrders = DownloadFiles(GetFtpOrders(), DirDownloadOrders);
 //}
 //public void DownloadPayments()
 //{
 //    _downloadedPayments = DownloadFiles(GetFtpPayments(), DirDownloadPayments);
 //}
 public void ListFtpFiles(FTPdirectory files)
 {
     foreach (var file in files)
     {
         Console.WriteLine(file.FullName + " " + file.Permission + " " + file.Filename);
     }
 }
예제 #8
0
        /// <summary>
        /// Return a detailed directory listing, and also download datetime stamps if specified
        /// </summary>
        /// <param name="directory">Directory to list, e.g. /pub/etc</param>
        /// <param name="doDateTimeStamp">Boolean: set to True to download the datetime stamp for files</param>
        /// <returns>An FTPDirectory object</returns>
        public FTPdirectory ListDirectoryDetail(string directory, bool doDateTimeStamp)
        {
            String URI = GetDirectory(directory);
            System.Net.FtpWebRequest ftp = GetRequest(URI);
            // Set request to do simple list
            ftp.Method = System.Net.WebRequestMethods.Ftp.ListDirectoryDetails;

            string str = GetStringResponse(ftp);
            // replace CRLF to CR, remove last instance
            str = str.Replace("\r\n", "\r").TrimEnd('\r');
            // split the string into a list
            FTPdirectory dir = new FTPdirectory(str, _lastDirectory);

            // download timestamps if requested
            if (doDateTimeStamp)
            {
                foreach (FTPfileInfo fi in dir)
                {
                    fi.FileDateTime = this.GetDateTimestamp(fi);
                }
            }

            return dir;
        }