2009-06-24 7 views
7

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

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); 
} 
+0

Très bon point, il me manque cette propriété. – arbiter

+1

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

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);