Почему файлы иногда другого размера или повреждены после передачи по FTP?
У меня проблема с загрузкой файла с использованием компонента TidFTP в Delphi XE2. Я могу установить соединение с FTP-сайтом, получить список файлов и выполнить команду get. Однако, когда я пытаюсь загрузить файл с помощью команды get, файл всегда загружается больше исходного файла. Тогда последующий файл поврежден.
Кроме того, если я пытаюсь загрузить несколько файлов, первый файл загружается (больше исходного), а остальные файлы пропускаются. Из команды get не выдается никакой ошибки, она просто завершается. Я попытался подключиться к некоторым событиям в элементе управления TidFTP, таким как AfterGet и OnStatus, но все выглядит нормально.
Я попытался использовать сторонний FTP-клиент для доступа к файлу и его загрузки, просто чтобы убедиться, что это не проблема с нашим FTP-сервером, и эта загрузка работала, как и ожидалось. Поэтому я думаю, что это может быть связано с контролем TidFTP или, возможно, я делаю что-то неправильно.
Вот процедура, которую я использую для загрузки файла:
var
ftp: TIdFTP;
strDirectory: string;
begin
ftp := TIdFTP.Create(nil);
try
ftp.Host := 'ftp.myftpserver.com'
ftp.Passive := false;
ftp.Username := 'TestUser';
ftp.Password := 'TestPassword';
ftp.ConnectTimeout := 1000;
ftp.Connect();
ftp.BeginWork(wmRead);
ftp.ChangeDir('/TestArea/');
strDirectory := 'c:\test\';
if not DirectoryExists(strDirectory) then
CreateDir(strDirectory);
ftp.Get('Test.zip', strDirectory + '\' + 'Test.zip', true, false);
ftp.Disconnect();
except
on e: exception do
showMessage(e.message);
end;
end;