Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка всех файлов из директории FTP. (ICS) 
:(
    Опции темы
val1401
Дата 16.9.2010, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.9.2010

Репутация: нет
Всего: нет



Здравствуйте!
Подскажите пожалуйста как загрузить все файлы из определённой директории на FTP при помощи TFtpClient из библиотеки ICS?


PM MAIL   Вверх
Akella
Дата 16.9.2010, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



А примеры ты посмотрел?

Добавлено @ 15:55
Код

// slData - TStringList;
// У TFtpClient есть свойство LocalFileName, в которое нужно прописать имя файла. В этот файл компонента будет сохранять список файлов, каталогов. Можно, конечно, ещё работать со свойствами OnDisplay/OnDisplayFile.



//получаем список всего, что есть в директории на FTP сервере


    if FtpClient1.Connected then
    begin
          Application.ProcessMessages;
          LogUpdate('попытка смены каталога на "out"');

          FtpClient1.DisplayFileFlag := true;

          //смена каталога
          FtpClient1.HostDirName := '/out';
          FtpClient1.Cwd;

          if FtpClient1.Dir then
            begin
              slData.Clear;
              FtpClient1.Pwd;
              LogUpdate('Рабочий каталог: '+  FtpClient1.DirResult);


              //получаем список файлов

              //чистим список перед получением в него списка фтп-файлов
              slData.Clear;

              //удаляем файл со старым списком
              if FileExists(sMyDocAppPath + 'last_ftp_list.txt') then
                DeleteFile(sMyDocAppPath + 'last_ftp_list.txt');

              FtpClient1.LocalFileName := sMyDocAppPath + 'last_ftp_list.txt';

              FtpClient1.DisplayFileFlag := false;

              if not FtpClient1.Ls then
                LogUpdate(FtpClient1.ErrorMessage);


              slData.LoadFromFile(sMyDocAppPath + 'last_ftp_list.txt');

              FtpClient1.DisplayFileFlag := false;
            end;


          LogUpdate('Найдено файлов: '+intToStr(slData.Count));



Это сообщение отредактировал(а) Akella - 16.9.2010, 15:58
PM MAIL   Вверх
val1401
Дата 16.9.2010, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.9.2010

Репутация: нет
Всего: нет



Делаю так:
Код

procedure TForm1.DownloadFilesFromFTP(Server, Login, Password, Directory_FTP, Directory_Local :string;
 PassiveFTP : boolean);
var
 i: Integer;
 FileList : TStringList;
begin
 Form1.FtpClient1.HostName:=Server;
 Form1.FtpClient1.Username:=Login;
 Form1.FtpClient1.Password:=Password;
 Form1.FtpClient1.HostDirName := Directory_FTP;
 Form1.FtpClient1.Passive:=PassiveFTP ;
 Form1.FtpClient1.Connect;
 Form1.FtpClient1.Cwd;
 Form1.FtpClient1.LocalFileName := Application.GetNamePath + 'File.txt';
 Form1.FtpClient1.Ls;
 FileList := TStringList.Create;
 FileList.LoadFromFile(Application.GetNamePath + 'File.txt');
 for i := 0 to FileList.Count - 1 do
  begin
   Form1.FtpClient1.HostFileName := FileList.Strings[i];
   Form1.FtpClient1.LocalFileName := 'D:\' + FileList.Strings[i];
   Form1.FtpClient1.Get;
  end;
 Form1.FtpClient1.Quit;
 FreeAndNil(FileList );
 DeleteFile(Application.GetNamePath + 'File.txt');
end;



Возникла такая проблема... Если запустить прогу и выполнить эту процедуру, то всё работает нормально, если выполнить процедуру ещё раз то Form1.FtpClient1.Ls
возвращает только один файл... Если перезапустить прогу, то всё опять работает нормально... То есть процедура отрабатывает нормально только один раз за одну сессию программы, иначе после одного выполнения 
Form1.FtpClient1.Ls возвращает только один файл, причём последний по алфавиту...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1136 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.