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

#c# #asp.net #ftp #monitoring #fluentftp

#c# #asp.net #ftp #мониторинг #fluentftp

Вопрос:

Я использую приведенный ниже код. (FluentFTP) но элемент.При изменении будет указана только дата создания файла. Таким образом, его рендеринг основан на дате создания скопированного файла. (Не при копировании) Как я буду получать файлы на основе даты копирования / добавления в Fluent 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:tempFTPTest";

            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. Я не уверен, что понимаю разницу между двумя датами. Можете ли вы где-нибудь увидеть интересующую вас дату? Как в любом FTP-клиенте с графическим интерфейсом?

2. здесь доступны только две даты 1. Создано, 2. Изменено -> Создано, всегда отображается формат 01-01-0001, вот почему я использовал измененный..

3. Доступно ГДЕ ?

4. FtpListItem item -> элемент. Изменен и элемент. Созданный доступен

5. Но это не то, о чем я вас спрашивал. Я спрашиваю вас, можете ли вы увидеть значение , которое вас интересует, где угодно.

Ответ №1:

Объяснение:

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

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

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

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

            string downloadFileName = @"C:tempFTPTest";

            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);
                    }
                }
            }
        }
    }
  

Комментарии:

1. Файл, помимо содержимого, может отличаться размером, датой создания, а не только именем, отсюда ваше предположение, что файл существует на основе файла. Существует, и это тот же файл, что и неправильно.

2. Согласно нашему требованию, это работает нормально. Мы проверяем только новые файлы. Таким образом, проверка по дате не требуется. Другое решение — удалить файл с пути FTP, создать новую папку и поместить его туда, чтобы всякий раз, когда какие-либо файлы попадают в папку FTP, вы могли легко их обнаружить.