Получить последние добавленные / скопированные файлы с FTP-сервера, используя Fluent FTP в c # - PullRequest
0 голосов
/ 15 марта 2019

Я использую код ниже. (FluentFTP) но Item.Modified выдаст только дату создания файла. Так что его рендеринг основан на дате создания скопированного файла. (Не когда это скопировано) Как я получу файлы на основе скопированной / добавленной даты на свободном FTP.

private static void GetFiles()
    {
        using (FtpClient conn = new FtpClient())
        {
            string ftpPath = "ftp://myftp/";

            Dictionary<string, string> dirList = new Dictionary<string, string>();

            DateTime lastRunDate = DateTime.Now.AddMinutes(-2);

            string downloadFileName = @"C:\temp\FTPTest\";

            string newID = Guid.NewGuid().ToString();

            downloadFileName += newID + "\\";

            conn.Host = ftpPath;
            //conn.Credentials = new NetworkCredential("ftptest", "ftptest");
            conn.Connect();

            //Get all directories

            foreach (FtpListItem item in conn.GetListing(conn.GetWorkingDirectory(),
                FtpListOption.Modify | FtpListOption.Recursive))
            {
                // if this is a file
                if (item.Type == FtpFileSystemObjectType.File)
                {
                    if (item.Modified >= lastRunDate)
                    {
                        dirList.Add(item.FullName, item.Modified.ToString());
                        conn.DownloadFile(downloadFileName + item.FullName, item.FullName);
                    }
                }
            }
        }
    }

1 Ответ

0 голосов
/ 15 марта 2019

Пояснение:

Я загружаю файлы с FTP (требуется разрешение на чтение) с той же структурой папок. Таким образом, каждый раз, когда выполняется задание, я могу проверить физический путь, один и тот же файл (полный путь) существует Если его не существует, его можно рассматривать как новый файл. И я могу сделать то же самое и скачать тоже.

Это просто альтернативное решение.

Изменения кода:

private static void GetFiles()
    {
        using (FtpClient conn = new FtpClient())
        {
            string ftpPath = "ftp://myftp/";

            string downloadFileName = @"C:\temp\FTPTest\";

            downloadFileName +=  "\\";

            conn.Host = ftpPath;
            //conn.Credentials = new NetworkCredential("ftptest", "ftptest");
            conn.Connect();

            //Get all directories

            foreach (FtpListItem item in conn.GetListing(conn.GetWorkingDirectory(),
                FtpListOption.Modify | FtpListOption.Recursive))
            {
                // if this is a file
                if (item.Type == FtpFileSystemObjectType.File)
                {
                    string localFilePath = downloadFileName + item.FullName;

                    //Only newly created files will be downloaded.
                    if (!File.Exists(localFilePath))
                    {
                        conn.DownloadFile(localFilePath, item.FullName);
                        //Do any action here.
                        Console.WriteLine(item.FullName);
                    }
                }
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...