Получите размер файла и время последней модификации на FTP-сервере в C#

Метод FtpGetFileSize, показанный в следующем коде, получает размер файла в байтах. Параметр uri предоставляет полный путь к файлу, как в ftp://www.somewhere.com/test.txt. Обратите внимание, что URI должен начинаться с ftp not http.

// Используйте FTP для получения размера удаленного файла.
private long FtpGetFileSize(string uri, string user_name,
    string password)
{
    // Получить объект, используемый для связи с сервером.
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
    request.Method = WebRequestMethods.Ftp.GetFileSize;

    // Получить сетевые учетные данные.
    request.Credentials =
        new NetworkCredential(user_name, password);

    try
    {
        using (FtpWebResponse response =
            (FtpWebResponse)request.GetResponse())
        {
            // Вернем размер.
            return response.ContentLength;
        }
    }
    catch (Exception ex)
    {
        // Если файл не существует, верните -1.
        // Иначе удалите ошибку.
        if (ex.Message.Contains("File unavailable")) return -1;
        throw;
    }
}

Этот код создает объект FtpWebRequest для работы с файлом. Он устанавливает свойство Method для запроса GetFileSize и получает ответ. Единственный трюк в том, что размер файла возвращается через свойство ContentLength ответа.

Метод FtpGetFileTimestamp, показанный в следующем коде, получает дату и время создания файла.

// Используйте FTP для получения метки времени удаленного файла.
private DateTime FtpGetFileTimestamp(string uri, string user_name,
    string password)
{
    // Получить объект, используемый для связи с сервером.
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
    request.Method = WebRequestMethods.Ftp.GetDateTimestamp;

    // Получить сетевые учетные данные.
    request.Credentials =
        new NetworkCredential(user_name, password);

    try
    {
        using (FtpWebResponse response =
            (FtpWebResponse)request.GetResponse())
        {
            // Вернем размер.
            return response.LastModified;
        }
    }
    catch (Exception ex)
    {
        // Если файл не существует, верните 1 января 3000.
        // Иначе удалите ошибку.
        if (ex.Message.Contains("File unavailable"))
            return new DateTime(3000, 1, 1);
        throw;
    }
}

Источник: http://csharphelper.com/blog/2015/01/get-file-size-and-last-modification-time-on-an-ftp-server-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector