【问题标题】:Get last added/copied files from FTP Server using Fluent FTP in c#在 c# 中使用 Fluent FTP 从 FTP 服务器获取最后添加/复制的文件
【发布时间】:2019-03-15 11:37:08
【问题描述】:

我正在使用以下代码。 (流利的FTP) 但 Item.Modified 只会给出文件创建日期。 所以它的渲染基于复制的文件创建日期。 (不是复制的时候) 我将如何在 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:\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);
                    }
                }
            }
        }
    }

【问题讨论】:

  • 我不确定我是否理解这两个日期之间的区别。 + 你能在任何地方看到你感兴趣的日期吗?就像在任何 GUI FTP 客户端中一样?
  • 这里只有两个日期可用 1. 创建 ,2.已修改 -> 创建时始终显示 01-01-0001 格式,这就是我使用已修改的 ..
  • 有售在哪里
  • FtpListItem item -> item.Modified 和 item.Created 可用
  • 但这不是我要问的。我在问你,如果你能在任何地方看到你感兴趣的价值

标签: c# asp.net ftp monitoring fluentftp


【解决方案1】:

说明:

我正在从具有相同文件夹结构的 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);
                    }
                }
            }
        }
    }

【讨论】:

  • 文件除了内容可能因大小而异,创建日期不仅因名称而异,因此您假设文件基于 File.Exists 存在并且同一个文件是错误的。
  • 根据我们的要求,这工作正常。我们只检查新文件。所以不需要按日期检查。另一种解决方案是从 FTP 路径中删除文件,创建新文件夹并将其放置在那里,这样无论何时有任何文件进入 FTP 文件夹,您都可以轻松检测到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-25
  • 1970-01-01
  • 2021-06-30
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多