FTP (Delphi)

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт

Сообщение #1 Maximus » 20.09.2011, 00:22

Необходимо скопировать файлы с компьютера на FTP сервер, как это реализовать?

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: FTP (Delphi)

Сообщение #2 Andrey » 20.09.2011, 17:27

Код: Выделить всё

try
    IdFTP:=TIdFTP.Create(nil); //Создаем объект в памяти
    If IdFTP.Connected then
    Begin
       IdFTP.Abort;
       IdFTP.Quit;
    End;
    IdFTP.Username := 'логин'; //Здесь логин
    IdFTP.Password := 'пароль'; //Здесь пароль
    IdFTP.Host := 'сервер'; //Здесь адрес сервера
    try
       IdFTP.Connect; //Соединяемся
       If IdFTP.Connected then
       Begin
          IdFTP.ChangeDir('/public_html/');          //Переходим на FTP в нужную папку (заменить на своё)
          IdFTP.Put('C:\DISKS1.CLP', 'DISKS1.CLP');          //Скопировать файл
          IdFTP.Quit; //Завершаем соединение
       End;
       ShowMessage('Загрузка файла на сервер завершена.');       
       except
          ShowMessage('Ошибка при загрузке файла на сервер.');
       end;
   finally
      IdFTP.Free;
   end;

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт

Re: FTP (Delphi)

Сообщение #3 Maximus » 20.09.2011, 18:15

А какой элемент нужно добавить на форму?

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: FTP (Delphi)

Сообщение #4 Andrey » 20.09.2011, 18:17

В uses добавить IdFTP из набора Indy Client.
На форму ничего не нужно (ну если только кнопку по нажатию которой будет вызываться эта процедура)

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт

Re: FTP (Delphi)

Сообщение #5 Maximus » 20.09.2011, 18:22

Код: Выделить всё

[Error] Unit1.pas(31): '.' expected but ':=' found
[Error] Unit1.pas(32): Undeclared identifier: 'Connected'
[Error] Unit1.pas(34): Undeclared identifier: 'Abort'
[Error] Unit1.pas(35): Undeclared identifier: 'Quit'
[Error] Unit1.pas(37): Undeclared identifier: 'Username'
[Error] Unit1.pas(38): Undeclared identifier: 'Password'
[Error] Unit1.pas(39): Undeclared identifier: 'Host'
[Error] Unit1.pas(41): Undeclared identifier: 'Connect'
[Error] Unit1.pas(42): Undeclared identifier: 'Connected'
[Error] Unit1.pas(44): Undeclared identifier: 'ChangeDir'
[Error] Unit1.pas(45): Undeclared identifier: 'Put'
[Error] Unit1.pas(46): Undeclared identifier: 'Quit'
[Error] Unit1.pas(53): Undeclared identifier: 'Free'
[Error] Unit1.pas(56): '.' expected but ';' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: FTP (Delphi)

Сообщение #6 Andrey » 20.09.2011, 18:25

Как всегда забыл скопировать объявление переменных.

Код: Выделить всё

var IdFTP:TIdFtp;

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт

Re: FTP (Delphi)

Сообщение #7 Maximus » 20.09.2011, 18:32

Такая ошибка.
Изображение

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: FTP (Delphi)

Сообщение #8 Andrey » 20.09.2011, 18:37

Как изменял этот код (не считая логина и пароля)? Судя по картинке где-то обнаружен недопустимый символ \

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт

Re: FTP (Delphi)

Сообщение #9 Maximus » 20.09.2011, 18:48

Это я поставил в ChangeDir, думал нужно чтобы в корневой каталог вошло. Вообще ничего не нужно в данном случае?

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: FTP (Delphi)

Сообщение #10 Andrey » 20.09.2011, 18:49

Слэш в другую сторону надо поставить (/).
И для корневого это наверно не требуется

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт

Re: FTP (Delphi)

Сообщение #11 Maximus » 20.09.2011, 18:52

Закомментировал эту строку, скопировалось нормально. Спасибо.

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт

Re: FTP (Delphi)

Сообщение #12 Maximus » 08.02.2012, 00:00

А можно получить полный список файлов хранящихся в каталоге и дату последнего изменения каждого из них?

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: FTP (Delphi)

Сообщение #13 Andrey » 08.02.2012, 11:53

Можно. Что-то типа

Код: Выделить всё

FTP.List;
for i:=0 to FTP.DirectoryListing.Count-1 do
   begin
ListBox1.Items.Add(IdFTP.DirectoryListing.Items[i].FileName + '     ' + IntToStr(IdFTP.DirectoryListing.Items[i].Size));
   end;

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт

Re: FTP (Delphi)

Сообщение #14 Maximus » 08.02.2012, 12:47

FTP? Может быть IdFTP?

Код: Выделить всё

FTP.List;
for i:=0 to FTP.DirectoryListing.Count-1 do

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: FTP (Delphi)

Сообщение #15 Andrey » 08.02.2012, 12:48

Да, это всего лишь имя. Я не смотрел как он до этого назывался.

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт

Re: FTP (Delphi)

Сообщение #16 Maximus » 08.02.2012, 12:52

Использовал с предыдущем кодом

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
var IdFTP:TIdFtp;
    i: Integer;
begin
  try
    IdFTP:=TIdFTP.Create(nil);
    If IdFTP.Connected then
    Begin
       IdFTP.Abort;
       IdFTP.Quit;
    End;
    IdFTP.Username := '';
    IdFTP.Password := '';
    IdFTP.Host := '';
    try
       IdFTP.Connect; //Соединяемся
       If IdFTP.Connected then
       Begin
          //IdFTP.ChangeDir('');
          IdFTP.List;
          for i:=0 to IdFTP.DirectoryListing.Count-1 do
            begin
              ListBox1.Items.Add(IdFTP.DirectoryListing.Items[i].FileName + '     ' + IntToStr(IdFTP.DirectoryListing.Items[i].Size));
            end;
       End;
       except
          ShowMessage('Ошибка.');
       end;
   finally
      IdFTP.Free;
   end;
end;

Выдаётся ошибка.

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: FTP (Delphi)

Сообщение #17 Andrey » 08.02.2012, 12:53

Какая ошибка?

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт

Re: FTP (Delphi)

Сообщение #18 Maximus » 08.02.2012, 12:54

ShowMessage('Ошибка.');

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: FTP (Delphi)

Сообщение #19 Andrey » 08.02.2012, 12:56

Код: Выделить всё

IdFTP.Username := '';
    IdFTP.Password := '';
    IdFTP.Host := '';

Тут данные правильные? Он просто подключиться не может.

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 8 месяцев
Откуда: Воронеж
ICQ Сайт

Re: FTP (Delphi)

Сообщение #20 Maximus » 08.02.2012, 12:56

Да, тут всё верно. И try стоит уже после подключения.


Вернуться в «Delphi/Pascal»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 13 гостей