我使用C#Web应用程序,并需要使用FTP将文件下载到本地文件夹。这些图像需要修改日期大于我指定的日期。将文件从C#中的FTP服务器下载到修改日期大于指定日期的本地文件夹中
代码:
public static List<FTPLineResult> GetFilesListSortedByDate(string ftpPath, Regex nameRegex, DateTime cutoff, System.Security.Cryptography.X509Certificates.X509Certificate cert)
{
List<FTPLineResult> output = new List<FTPLineResult>();
if (cert != null)
{
FtpWebRequest request = FtpWebRequest.Create(ftpPath) as FtpWebRequest;
request.Credentials = new NetworkCredential("unm", "pwd");
request.ClientCertificates.Add(cert);
ConfigureProxy(request);
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
FtpWebResponse response = request.GetResponse() as FtpWebResponse;
StreamReader directoryReader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.ASCII);
var parser = new FTPLineParser();
while (!directoryReader.EndOfStream)
{
var result = parser.Parse(directoryReader.ReadLine());
if (!result.IsDirectory && result.DateTime > cutoff && nameRegex.IsMatch(result.Name))
{
output.Add(result);
}
}
// need to ensure the files are sorted in ascending date order
output.Sort(
new Comparison<FTPLineResult>(
delegate(FTPLineResult res1, FTPLineResult res2)
{
return res1.DateTime.CompareTo(res2.DateTime);
}
)
);
}
return output;
}
我必须使用证书(或.p12)。
我该怎么做?
感谢马丁,我更新我的帖子的代码我用来检索文件列表。我可以在while块中下载文件,而不是执行** output.Add(result); **我可以像**下载(destnationfilename,sourcefilename)**那样做一些事情吗? – dragy
当然可以。但是,如果这是您所期望的,我认为这不会对性能有很大帮助。 –
我以为我可以通过while循环传递相同的文件。在这种情况下,不需要通过过滤列表。但是,我不知道如何在现有的while循环中下载文件,并且使用另一个通过创建的列表来完成它。 – dragy