Ich arbeite an C# -Web-Anwendung und müssen Dateien mit FTP in den lokalen Ordner herunterladen. Für diese Bilder muss das Änderungsdatum größer als das von mir angegebene Datum sein.Herunterladen von Dateien vom FTP-Server in C# in lokalen Ordner mit Änderungsdatum größer als angegeben
Code:
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;
}
Ich habe Zertifikat verwenden (P12).
Wie kann ich das tun?
Danke Martin, ich aktualisiert meinen Beitrag mit Code, den ich verwendet Liste der Dateien abzurufen. Kann ich Dateien während blockweise herunterladen, anstatt ** output.Add (result); ** kann ich etwas wie ** download (destnationfilename, sourcefilename) ** tun? – dragy
Sicher kannst du. Aber ich denke nicht, dass es in Bezug auf die Performance viel helfen würde, wenn Sie das erwarten. –
Ich dachte, ich könnte Datei im gleichen Durchlauf durch die While-Schleife herunterladen. In diesem Fall wäre es nicht notwendig, durch die gefilterte Liste zu gehen. Aber, ich wusste nicht, wie man Datei in existierender While-Schleife herunterlädt und tat es mit einer anderen passing thru erzeugten Liste. – dragy