C#查找文件何时上传到FTP

时间:2018-12-07 20:45:47

标签: c# file datetime ftp upload

我有一份工作,如果已上传一些新文件,则在设定的时间段内一次“查看” FTP。一旦找到任何内容,便将其下载。 问题是如何使用C#提取文件实际上传到FTP的时间。

谢谢。我只是仍然不知道如何准确地提取文件上传到FTP而不修改的时间。如下所示显示文件修改时间。

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './components/home/home.component';
import { AdminComponent } from './components/admin/admin.component';

const routes: Routes = [  
  { path: 'admin', component: AdminComponent },
  { path: '', component: HomeComponent },
  { path: '**', component: HomeComponent }
];
@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule {}

请提供一些可能集成到我当前解决方案中的示例代码

fileInfo = session.GetFileInfo(FileFullPath);
dateUploaded = fileInfo.LastWriteTime;  

1 个答案:

答案 0 :(得分:3)

您可能无法这样做,除非您知道FTP服务器可靠地将文件创建/修改日期设置为上载日期。做一些测试上传,看看。如果在您要使用的特定服务器上为您解决了问题,那就太好了;记下您上次访问的时间,并检索日期较长的文件。举例来说,刚才测试上传到Azure ftp服务器(可能来自Microsoft IIS)确实确实将文件时间设置为上传日期。请注意,服务器发送的列出文件时间可能与您所在的时区不同,也不会显示任何时区信息-相对于您的当前时间可能只是几个小时的时间

要获取日期本身,您需要在列出远程目录时解析服务器给您的响应。如果您将FTP库用于C#(编辑:您正在使用WinSCP),则可能已经为您进行了处理(编辑:是,请参见https://winscp.net/eng/docs/library_session_listdirectoryhttps://winscp.net/eng/docs/library_remotefileinfo;除非最近情况有所改善,否则.NET中的默认FTP设置不是很好-它更适合用于基本文件检索,而不是复杂的同步,因此,我肯定会考虑使用功能强大的库(并且我们在这里不做软件推荐,抱歉,如果您要仔细检查提供的日期信息,

也就是说,还有另一种执行此同步过程的方法,它更多地是您要在整个过程中要做的事情(并且不一定依赖于解析非标准列表输出):

保留上次看到的每个文件的内存,并在查看当前存在的每个文件时引用它。这实际上很容易做到:

  • 下载所有文件。
  • 断开连接。
  • 过一会儿再回去下载所有您还没有的文件
  • 跟踪下载了哪些文件并对其进行处理?

您说您仍要下载它们,因此,只要将您尚未拥有的任何文件(或日期更新,文件大小不同的文件)视为自上次查看以来已被更改的新文件< / p>

可能需要大量的工作,具体取决于您要支持多少台服务器