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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с фтп, переброс файлов на сервер 
:(
    Опции темы
Gava
Дата 7.5.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Задача: надо перекинуть с компьютера из определенной папки все файлы в определенную папку на фтп-сервере.
Я написал код для переброса 1 файла на фтп сервер. Как и что изменить?

Код

procedure TForm1.Button1Click(Sender: TObject); //подключение
begin
with IdFTP1 do
    begin
    Username := 'a';
    Password := '1';
    Connect;
    ChangeDir('inf');
  end;
  button2.Enabled:=true
end;

procedure TForm1.Button2Click(Sender: TObject); //закачка
begin
  if IdFTP1.Connected then IdFTP1.Put('c:\inf\123.txt', '123.txt');
end;

PM MAIL ICQ   Вверх
_hunter
Дата 7.5.2007, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



теперь добавь поиск всех файлов в папке (обсуждалось не раз) и выполняй свой код для каждого найденного файла...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Gava
Дата 7.5.2007, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а по времени закачка 10'000 файлов много будет занимать? если вот с таким простым кодом...
PM MAIL ICQ   Вверх
_hunter
Дата 7.5.2007, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



много: куча времени будет уходить на FTP-команды...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
z-END
Дата 7.5.2007, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

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



Цитата(Gava @  7.5.2007,  19:51 Найти цитируемый пост)
а по времени закачка 10'000 файлов много будет занимать? если вот с таким простым кодом...

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



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Gava
Дата 8.5.2007, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



теперь стало вот так:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
with IdFTP1 do
    begin
    Username := 'a';
    Password := '1';
    host := '10.140.36.47';
    Connect;
    ChangeDir('1');
  end;
  button2.Enabled:=true
end;

procedure TForm1.Button2Click(Sender: TObject);
Var SearchRec:TSearchRec;
begin
If FindFirst('c:\Temp\*.*', faAnyFile, SearchRec)=0 then
  repeat
    if IdFTP1.Connected then  IdFTP1.put(ExpandFileName(SearchRec.name), SearchRec.name);
  until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);
  form1.Close;
end;

и он выдает ошибку на строчке IdFTP1.put(ExpandFileName(SearchRec.name), SearchRec.name);


Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  error.JPG 19,21 Kb
PM MAIL ICQ   Вверх
Gava
Дата 8.5.2007, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ps адрес в ошибке - это место где проект лежит
PM MAIL ICQ   Вверх
_hunter
Дата 8.5.2007, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



точки (".." и  "..") фильтруй...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Gava
Дата 8.5.2007, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



_hunter, помогло, сенкс, но не надолгоsmile
терь такая фигля.
причем: О:\темп\марк... вот причем тут этот путь я не понимаю....
код получился такой:
Код

procedure TForm1.Button2Click(Sender: TObject);
Var SearchRec:TSearchRec;
begin

If FindFirst('c:\123\*.*', faAnyFile, SearchRec)=0 then
  repeat
    if (SearchRec.Attr <> faDirectory) then
       begin
         if IdFTP1.Connected then  IdFTP1.put(ExpandFileName(SearchRec.name), SearchRec.name);
       end;
  until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);
  form1.Close;


Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  error2.JPG 20,90 Kb
PM MAIL ICQ   Вверх
_hunter
Дата 8.5.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



атрибуты так:
if (Attr and faDirectory) <> 0
фильтровать нужно.
да и отладчиком по коду пройтись не помешалобы...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Gava
Дата 8.5.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



заработало вот это:
Код

procedure TForm1.Button2Click(Sender: TObject);
Var SearchRec:TSearchRec;
begin
If FindFirst('c:\123\*.*', faAnyFile, SearchRec)=0 then
  begin
    repeat
      if (SearchRec.Attr <> faDirectory) then  if IdFTP1.Connected then  IdFTP1.put('c:\123\'+SearchRec.name, SearchRec.name);
    until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
    form1.Close;
  end;
end;

заменил 
IdFTP1.put(ExpandFileName(SearchRec.name), SearchRec.name);
на
IdFTP1.put('c:\123\'+SearchRec.name, SearchRec.name);
и заработалоsmile

ExpandFileName(SearchRec.name) равно или не равно 'c:\123\'+SearchRec.name, если действие происходит в папке с:\123??????
PM MAIL ICQ   Вверх
Pararam
Дата 13.5.2007, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот удобная функция для закачки файлов на FTP сервер!

Зависимости:
Код

uses WinInet;


Код

function FtpSendFile(strHost, strUser, strPwd: string; Port: Integer; ftpDir, ftpFile, TargetFile: string): Boolean;
var
  hNet,hFTP:HINTERNET;
  bSuccess:Boolean;
begin
  Result := False;
  { Open an internet session }
  hNet := InternetOpen('MSIE 6.0',INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
  { See if connection handle is valid }
  if hNet = nil then
  begin
    ShowMessage('Unable to get access to WinInet.Dll');
    Exit;
  end;
  { Connect to the FTP Server }
  hFTP := InternetConnect(hNet,PChar(strHost),port,PChar(StrUser),PChar(strPwd),INTERNET_SERVICE_FTP,0,0);
  if hFTP = nil then
  begin
    InternetCloseHandle(hNet);
    Exit;
  end;
  { Change directory }
  bSuccess := FtpSetCurrentDirectory(hFTP, PChar(ftpDir));
  if not bSuccess then
  begin
    InternetCloseHandle(hFTP);
    InternetCloseHandle(hNet);
    Exit;
  end;
  { Open the send file }
  FtpPutFile(hftp,PChar(TargetFile),Pchar(ftpFile),0,0);
  InternetCloseHandle(hFTP);
  InternetCloseHandle(hNet);
  Result := True;
end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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