Получите размер файла и время последней модификации на 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;
}
}
