我有一份工作,如果已上传一些新文件,则在设定的时间段内一次“查看” 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;
答案 0 :(得分:3)
您可能无法这样做,除非您知道FTP服务器可靠地将文件创建/修改日期设置为上载日期。做一些测试上传,看看。如果在您要使用的特定服务器上为您解决了问题,那就太好了;记下您上次访问的时间,并检索日期较长的文件。举例来说,刚才测试上传到Azure ftp服务器(可能来自Microsoft IIS)确实确实将文件时间设置为上传日期。请注意,服务器发送的列出文件时间可能与您所在的时区不同,也不会显示任何时区信息-相对于您的当前时间可能只是几个小时的时间
要获取日期本身,您需要在列出远程目录时解析服务器给您的响应。如果您将FTP库用于C#(编辑:您正在使用WinSCP),则可能已经为您进行了处理(编辑:是,请参见https://winscp.net/eng/docs/library_session_listdirectory和https://winscp.net/eng/docs/library_remotefileinfo);除非最近情况有所改善,否则.NET中的默认FTP设置不是很好-它更适合用于基本文件检索,而不是复杂的同步,因此,我肯定会考虑使用功能强大的库(并且我们在这里不做软件推荐,抱歉,如果您要仔细检查提供的日期信息,
也就是说,还有另一种执行此同步过程的方法,它更多地是您要在整个过程中要做的事情(并且不一定依赖于解析非标准列表输出):>
保留上次看到的每个文件的内存,并在查看当前存在的每个文件时引用它。这实际上很容易做到:
您说您仍要下载它们,因此,只要将您尚未拥有的任何文件(或日期更新,文件大小不同的文件)视为自上次查看以来已被更改的新文件< / p>
可能需要大量的工作,具体取决于您要支持多少台服务器