FTP (Delphi)

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Andrey » 10 июн 2012, 10:19

Тема перенесена из архива.

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Maximus » 10 июн 2012, 12:01

Необходимо получить время и дату последнего изменения, объём файла, а потом закачать его с FTP. Как это сделать?

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Andrey » 10 июн 2012, 12:12

Сейчас проверю, но дату и время последнего изменения вроде бы возвращает команда List, нужно только распарсить результат.
А скачивать так:

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

idFTP.Get('test.rar', 'c:/temp/test.rar', True);
Первый параметр - имя файла, второй - путь для сохранения.

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Maximus » 10 июн 2012, 12:19

Если во втором параметре не указывать путь, а только имя файла, то он будет сохранён в тот же каталог где и исполняемый файл? Что означает третий параметр?

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Andrey » 10 июн 2012, 12:24

Если не указывать путь то файл будет сохранён в текущий каталог. Тртий параметр - поддержка докачки при обрыве связи.

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Maximus » 10 июн 2012, 12:32

А вес файла как получить?

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Andrey » 10 июн 2012, 12:38

Уже писал
[delphi]FTP.List;
for i:=0 to FTP.DirectoryListing.Count-1 do
ListBox1.Items.Add(IdFTP.DirectoryListing.Items.FileName + ' ' + IntToStr(IdFTP.DirectoryListing.Items.Size));[/delphi]
Последняя часть третьей строки.
Ну или вручную парсить результат команды List.

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Maximus » 10 июн 2012, 12:42

Это мы получим размеры всех файлов хранящихся в директории FTP, а размер одного конкретного файла нельзя узнать?
Или придётся в цикле проверять имена, пока не найду нужное?

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Andrey » 10 июн 2012, 12:49

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

IdFTP1.Size('имя_файла');
Не все серверы поддерживают эту команду

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Maximus » 10 июн 2012, 13:05

Действительно не поддерживает. А как лучше сделать, мне нужно постоянно сверять размер файла т.е. делаю это в таймере, мне каждый раз создавать соединение и отключаться или один раз при запуске программы соединиться?

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Andrey » 10 июн 2012, 13:20

Как часто таймер срабатывает?

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Maximus » 10 июн 2012, 13:25

Думаю где-то через каждые 10-30 секунд.

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Andrey » 10 июн 2012, 13:27

Тогда лучше не отключаться, т.к. подключение происходит не мгновенно.

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Maximus » 10 июн 2012, 13:32

А если вдруг соединение разорвётся? Вот такая проверка поможет?

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

If not IdFTP.Connected then IdFTP.Connect;

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: FTP (Delphi)

Сообщение Andrey » 10 июн 2012, 13:34

Да, поможет

Ответить