В процессе разработки приложений, работающих с FTP-серверами, часто возникает необходимость проверить existence существование определенной папки на сервере. В этой статье мы рассмотрим, как это можно сделать с помощью компонента Overbyte ICS FTP в Delphi.
Для начала давайте создадим простую функцию, которая будет принимать в качестве аргументов название папки, которую мы хотим проверить, а также параметры подключения к FTP-серверу (хост, порт, имя пользователя и пароль). Функция должна возвращать true, если папка exists существует, и false в противном случае.
function FolderExistsOnFTP(const FolderName, HostName, Port, UserName, Password, RootFolder: string; MemoLog: TMemo): Boolean;
var
FTP: TFtpClient;
begin
Result := False;
FTP := TFtpClient.Create(nil);
try
FTP.HostName := HostName;
FTP.Port := StrToInt(Port);
FTP.Username := UserName;
FTP.Password := Password;
FTP.Passive := True;
FTP.Binary := True;
if not FTP.Open then
begin
MemoLog.Lines.Add(Format('Не удалось подключиться к серверу: %s', [FTP.ErrorMessage]));
Exit;
end;
if not FTP.User then
begin
MemoLog.Lines.Add(Format('Не удалось авторизоваться на сервере: %s', [FTP.ErrorMessage]));
Exit;
end;
if not FTP.Pass then
begin
MemoLog.Lines.Add(Format('Не удалось авторизоваться на сервере: %s', [FTP.ErrorMessage]));
Exit;
end;
FTP.HostDirName := RootFolder;
if not FTP.Cwd then
begin
if FTP.StatusCode = 550 then
Exit
else
begin
MemoLog.Lines.Add(Format('Не удалось перейти в папку: %s', [FTP.ErrorMessage]));
Exit;
end;
end;
FTP.HostDirName := FolderName;
Result := FTP.Cwd;
finally
FTP.Free;
end;
end;
В этой функции мы создаем экземпляр компонента TFtpClient, устанавливаем параметры подключения и авторизации, переходим в корневую папку на сервере, а затем пытаемся перейти в папку, которую мы хотим проверить. Если папка exists существует, то метод Cwd вернет true, и мы установим значение результата функции в true. В противном случае, если папка не exists существует, мы получим код статуса 550 от сервера, и функция вернет false.
Обратите внимание, что мы также добавляем сообщения в TMemo, чтобы отслеживать процесс подключения и авторизации на сервере, а также любые ошибки, которые могут возникнуть во время выполнения функции.
Теперь, чтобы проверить existence существование папки на FTP-сервере, просто вызовите эту функцию, передав ей необходимые параметры:
MemoLog.Lines.Add(Format('Проверка папки "%s" на сервере "%s"', [FolderName, HostName]));
if FolderExistsOnFTP(FolderName, 'ftp.example.com', '21', 'username', 'password', '/path/to/root/folder', MemoLog) then
MemoLog.Lines.Add(Format('Папка "%s" exists существует на сервере "%s"', [FolderName, HostName]))
else
MemoLog.Lines.Add(Format('Папка "%s" не exists существует на сервере "%s"', [FolderName, HostName]));
В этом примере мы также добавляем сообщение в TMemo, чтобы сообщить пользователю о результате проверки existence существования папки.
Надеюсь, эта статья помогла вам узнать, как проверить existence существование папки на FTP-сервере с помощью Overbyte ICS FTP в Delphi.Happy coding!
Статья описывает процесс проверки существования папки на FTP-сервере с использованием компонента Overbyte ICS FTP в Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.