Je recherche un court exemple de code qui utilise l'espace de noms System.Net.FtpWebRequest pour obtenir l'horodatage d'un fichier distant spécifié sur un serveur ftp. Je sais que je dois définir la propriété Method de mon objet de requête à WebRequestMethods.Ftp.GetDateTimestamp mais je ne suis pas sûr de savoir comment récupérer la réponse dans un objet System.DateTime.System.Net.FtpWebRequest Exemple GetDateTimestamp
7
A
Répondre
14
Yep - des thats à peu près ce que j'ai fini avec. Je suis allé avec quelque chose comme ça
request = FtpWebRequest.Create("ftp://ftp.whatever.com/somefile.txt");
request.Method = WebRequestMethods.Ftp.GetDateTimestamp;
request.Proxy = null;
using (FtpWebResponse resp = (FtpWebResponse)request.GetResponse())
{
Console.WriteLine(resp.LastModified);
}
1
Quelque chose comme ceci:
DateTime DateValue;
FtpWebRequest Request = (FtpWebRequest)WebRequest.Create(yourUri);
Request.Method = WebRequestMethods.Ftp.GetDateTimestamp;
Request.UseBinary = false;
using (FtpWebResponse Response = (FtpWebResponse)Request.GetResponse())
using (TextReader Reader = new StringReader(Response.StatusDescription))
{
string DateString = Reader.ReadLine().Substring(4);
DateValue = DateTime.ParseExact(DateString, "yyyyMMddHHmmss", CultureInfo.InvariantCulture.DateTimeFormat);
}
1
Pour obtenir le champ de date seulement, mais pas le temps, exactement comme la première réponse dans ce fil à l'exception suivante:
Console.WriteLine(response.LastModified().ToShortDateString);
Très bon point, il me manque cette propriété. – arbiter
Un problème avec cette approche: il convertit automatiquement l'heure dans le fuseau horaire actuel du client et non dans le fuseau horaire du serveur. J'ai trouvé que j'avais besoin d'utiliser WebRequestMethods.Ftp.ListDirectoryDetails et analyser le temps hors de la ligne sur laquelle le fichier est trouvé afin d'obtenir la date de modification du fuseau horaire du serveur. – NightOwl888