.NET FtpWebRequest не возвращает DateTimeStamp или FileSize - PullRequest
1 голос
/ 04 июня 2010

Я использую FtpWebRequest для подключения к FTP-серверу, и я могу использовать WebRequestMethods.Ftp.ListDirectoryDetails для точного отображения подробностей каталога. Однако ответ от удаленного сервера имеет день, месяц и время, но не год:

-rw-rw-rw- 1 группа пользователей 949 2 июня, 08:43 Unsubscribees_20100602.zip

-rw-rw-rw- 1 группа пользователей 1773 1 июня, 06:48 export_142571709.txt

-rw-rw-rw- 1 группа пользователей 1773 июн 1 06:50 export_142571722.txt

-rw-rw-rw- 1 группа пользователей 980 1 июня, 06:51 export_142571734.txt

Это необходимо для приложения, которое я пишу, поэтому я попытался использовать WebRequestMethods.Ftp.GetDateTimestamp, чтобы получить дату и время для каждого файла, но ответ всегда пуст. Исключение не выбрасывается.

try
{
    FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(path);

    ftp.Credentials = new NetworkCredential(_ftpUsername, _ftpPassword);
    ftp.Method = WebRequestMethods.Ftp.GetDateTimestamp;

    try
    {
        Stream stream = ftp.GetResponse().GetResponseStream();
        StreamReader sReader = new StreamReader(stream);

        return sReader;
    }
    catch (Exception exp)
    {
        throw new Exception(String.Format("An error occured getting the timestamp for {0}: {1}<br />", path, exp.Message));
    }
}

У кого-нибудь есть идеи, почему это будет?

1 Ответ

3 голосов
/ 14 июня 2010

Метод GetDateTimestamp не возвращает свои данные в обычном потоке. Так же, как метод размера файла возвращает свои данные в заголовке / свойстве ContentLength, метод GetDateTimestamp имеет свои данные в заголовочном / свойстве LastModified.

    FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(path);

    ftp.Credentials = new NetworkCredential(_ftpUsername, _ftpPassword);
    ftp.Method = WebRequestMethods.Ftp.GetDateTimestamp;

    try
    {
       using(FtpWebResponse response = (FtpWebResponse)ftp.GetResponse())
       {
           return response.LastModified;
       }
    }
    catch
    {
        throw new Exception(String.Format("An error occured getting the timestamp for {0}: {1}<br />", path, exp.Message));
    }

Кстати, вы также можете проверить этот ответ.

...