2009-06-24 13 views
7

Poszukuję krótkiego fragmentu przykładowego kodu, który korzysta z przestrzeni nazw System.Net.FtpWebRequest, aby uzyskać znacznik czasu określonego zdalnego pliku na serwerze ftp. Wiem, że muszę ustawić właściwość Method mojego obiektu żądania na WebRequestMethods.Ftp.GetDateTimestamp, ale nie jestem pewien, jak uzyskać odpowiedź z powrotem do obiektu System.DateTime.System.Net.FtpWebRequest GetDateTimestamp example

Odpowiedz

14

Tak - to jest to dość dużo, co skończyło się. Poszedłem ze coś takiego

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

Bardzo dobry punkt, tęsknię ta nieruchomość. – arbiter

+1

Jeden problem z tym podejściem - automatycznie konwertuje czas na bieżącą strefę czasową klienta, a nie strefę czasową serwera. Zauważyłem, że muszę użyć WebRequestMethods.Ftp.ListDirectoryDetails i przeanalizować czas poza linią, w której znajduje się plik, aby uzyskać zmodyfikowaną datę strefy czasowej serwera. – NightOwl888

1

coś takiego:

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

Aby uzyskać pole daty tylko ale nie czas, zrobić dokładnie tak, jak w pierwszej odpowiedzi w tym wątku z następującym wyjątkiem:

Console.WriteLine(response.LastModified().ToShortDateString); 
Powiązane problemy