Пример System.Net.FtpWebRequest GetDateTimestamp

Я ищу небольшой пример кода, который использует пространство имен System.Net.FtpWebRequest для получения метки времени указанного удаленного файла на ftp-сервере. Я знаю, что мне нужно установить для свойства Method моего объекта запроса значение WebRequestMethods.Ftp.GetDateTimestamp, но я не знаю, как вернуть ответ в объект System.DateTime.


person Dav Evans    schedule 24.06.2009    source источник


Ответы (3)


Да - примерно так я и закончил. Я пошел с чем-то вроде этого

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);
}
person Dav Evans    schedule 26.06.2009
comment
Одна проблема с этим подходом - он автоматически преобразует время в текущий часовой пояс клиента, а не в часовой пояс сервера. Я обнаружил, что мне нужно использовать WebRequestMethods.Ftp.ListDirectoryDetails и анализировать время из строки, в которой находится файл, чтобы получить измененную дату часового пояса сервера. - person NightOwl888; 30.11.2012

Чтобы получить только поле даты, но не время, сделайте то же самое, что и первый ответ в этой теме, за следующим исключением:

Console.WriteLine(response.LastModified().ToShortDateString);
person Carlos Morales    schedule 10.01.2012

Что-то вроде этого:

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);
}
person arbiter    schedule 26.06.2009