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