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

Поиск:

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


Новичок



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

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



заюзал со сборки OverbyteIcsV6
FtpClient...
посидел, разобрался вроде, но вишел прикол не доливает на фтп примерно 0,04 кб каждый раз(((

где копать, кто сталкивался.
никаких особых заморочек нету
Пасивный режим, на фтп FreeBSD, pureftpd.

Это сообщение отредактировал(а) dolphik - 10.2.2010, 17:46
PM MAIL   Вверх
dolphik
Дата 12.2.2010, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



неужто к сожалению никто не работал с етими компонентами ?
или может я неправильно пишу что...

прошу за остальние косяки не косающийся ФТП не бить smile
Код

procedure TForm1.inout;
var
i:integer;
conn:bool;
arh,lsdirfile:string;
label en,m2,m3,m4;
begin
if param.ftpworking<>'1' then
exit;
form2.changeicon(5,'');
arh:= arhivdir+GetTimedDir+FormatDateTime('HHMM',time)+'\' ;
lsdirfile:= ExtractFileDir(Application.ExeName)+'\'+lsfile;
Timer1.Enabled:=false;
SpeedButton1.Enabled:=false;
//Changing settings for FTP component
logit('Ставлю параметры ФТП клиента');
ProgressBar3.Position:=1;
FtpClient1.HostName:=ip;
FtpClient1.Port:='21';
FtpClient1.Passive:=CheckBox5.Checked;
FtpClient1.Username:=logn;
FtpClient1.Password:=password;
conn:=false;
try
  logit('Подключаюсь к '+ip);
  conn:=not(FtpClient1.Connect);

  logit('Подключился');
except;
  conn:=true;
  logit('Не удалось подключиться к хосту '+ip+', пропускаем этот раз...');
end;
if conn then goto en;
// End of FTP's settings
logit('Начало цикла передачи и приёма');
//    group out #1
ProgressBar3.Position:=2;
Application.ProcessMessages;
if not CheckBox1.Checked then goto m2;
scan(checkslash(dirlocout1));
logit('Група №1: Передача...');

//FtpClient1.HostDirName:=dirout1;
//FtpClient1.HostFileName:= dirout1;
if ts.Count>0 then
ProgressBar2.Max:=ts.Count-1 else ProgressBar2.Max:= 0 ;
ProgressBar2.Position:=0;
Application.ProcessMessages;
for i:=0 to ts.Count-1 do
begin
try
  logit('Ложу файл: "'+ts.Strings[i]+'"');
 // FormatDateTime
 try
  ForceDirectories(arh);
 except;
 end;
  FtpClient1.HostFileName:=dirout1+'/'+GetNameFile(ts.Strings[i]);
  FtpClient1.LocalFileName:=ts.Strings[i] ;
  FtpClient1.Put;
  FtpClient1.RestPut;
//  IdFTP1.Put(ts.Strings[i],GetNameFile(ts.Strings[i]),false);
  sleep(1);
  logit('Положил, удаляю его с локальной директории');
  CopyFile(pchar(ts.Strings[i]),pchar(arh+GetNameFile(ts.Strings[i])),false) ;
 // if deletefile(ts.Strings[i]) then logit('Удалил с локали '+GetNameFile(ts.Strings[i]));
  Application.ProcessMessages;
except;
logit('Група №1: Ошибка файловой операции над '+GetNameFile(ts.Strings[i])+' ...');
end;
  ProgressBar2.Position:=i;
  Application.ProcessMessages;
end;
logit('Передал все файли по групе №1');

m2:
//    group out #2
ProgressBar3.Position:=3;
Application.ProcessMessages;
if not CheckBox2.Checked then goto m3;
scan(checkslash(dirlocout2));
logit('Група №2: Передача...');
//IdFTP1.ChangeDir(dirout2);
//FtpClient1.HostDirName:=dirout2;
if ts.Count>0 then
ProgressBar2.Max:=ts.Count-1 else ProgressBar2.Max:= 0 ;
ProgressBar2.Position:=0;
Application.ProcessMessages;
for i:=0 to ts.Count-1 do
begin
try
try
  ForceDirectories(arh);
except;
end;
  logit('Ложу файл: "'+ts.Strings[i]+'"');
  FtpClient1.HostFileName:=dirout2+'/'+GetNameFile(ts.Strings[i]);
  FtpClient1.LocalFileName:=ts.Strings[i] ;
  FtpClient1.Put;

  //IdFTP1.Put(ts.Strings[i],GetNameFile(ts.Strings[i]),false);
  logit('Положил, удаляю его с локальной директории');
  sleep(1);
  CopyFile(pchar(ts.Strings[i]),pchar(arh+GetNameFile(ts.Strings[i])),false);
  if deletefile(ts.Strings[i]) then logit('Удалил с локали '+GetNameFile(ts.Strings[i]));
  Application.ProcessMessages;

except;
logit('Група №2: Ошибка файловой операции над '+GetNameFile(ts.Strings[i])+' ...');

end;
  ProgressBar2.Position:=i;
  Application.ProcessMessages;
end;
logit('Передал все файли по групе №2');

                /// group in # 3
m3:
ProgressBar3.Position:=4;
Application.ProcessMessages;
if not CheckBox3.Checked then goto m4;
logit('Група №3: Приём...');
//FtpClient1.HostDirName:=dirin1;

FtpClient1.HostFileName:=dirin1;
FtpClient1.LocalFileName:=lsdirfile;
FtpClient1.Ls;
//IdFTP1.ChangeDir(dirin1);
ts.Clear;
ts.LoadFromFile(lsdirfile);
//FtpClient1.Pwd;
//showmessage(ts.text);

if ts.Count>0 then
ProgressBar2.Max:=ts.Count-1 else ProgressBar2.Max:= 0 ;
ProgressBar2.Position:=0;
Application.ProcessMessages;
for i:=0 to ts.Count-1 do
begin
try
  logit('Принимаю файл: "'+ts.Strings[i]+'"');
  if fileexists( checkslash(dirlocin1)+ts.Strings[i] ) then MoveFile(pchar(checkslash(dirlocin1)+ts.Strings[i]),pchar(checkslash(dirlocin1)+ts.Strings[i]+'.old_ftploader'));
    FtpClient1.HostFileName    := dirin1+'/'+ts.Strings[i];
    FtpClient1.LocalFileName   := checkslash(dirlocin1)+ts.Strings[i];
   if FtpClient1.Get then
   BEGIN
     logit('Принял, удаляю его с фтп');
     sleep(1);
     FtpClient1.HostFileName    := dirin1+'/'+ts.Strings[i];
     if FtpClient1.Dele then
     logit('Удалил с фтп '+GetNameFile(ts.Strings[i]))
     else logit('Неудалось удалить с фтп '+GetNameFile(ts.Strings[i]));
   end
   else logit('Не принял файл');
  Application.ProcessMessages;
except;
logit('Група №3: Ошибка файловой операции над '+GetNameFile(ts.Strings[i])+' ...');

end;
  ProgressBar2.Position:=i;
  Application.ProcessMessages;
end;
logit('Принял все файли по групе №3');

          /// group in #4
m4:
ProgressBar3.Position:=5;
Application.ProcessMessages;
if not CheckBox4.Checked then goto en;
logit('Група №4: Приём...');

FtpClient1.HostFileName:=dirin2;
FtpClient1.LocalFileName:=lsdirfile;
FtpClient1.Ls;

ts.Clear;
ts.LoadFromFile(lsdirfile);


if ts.Count>0 then
ProgressBar2.Max:=ts.Count-1 else ProgressBar2.Max:= 0 ;
ProgressBar2.Position:=0;
Application.ProcessMessages;
for i:=0 to ts.Count-1 do
begin
try
  logit('Принимаю файл: "'+ts.Strings[i]+'"');
  if fileexists( checkslash(dirlocin2)+ts.Strings[i] ) then MoveFile(pchar(checkslash(dirlocin2)+ts.Strings[i]),pchar(checkslash(dirlocin2)+ts.Strings[i]+'.old_ftploader'));
    FtpClient1.HostFileName    := dirin2+'/'+ts.Strings[i];
    FtpClient1.LocalFileName   := checkslash(dirlocin2)+ts.Strings[i];
   if FtpClient1.Get then
   BEGIN
     logit('Принял, удаляю его с фтп');
     sleep(1);
     FtpClient1.HostFileName    := dirin2+'/'+ts.Strings[i];
     if FtpClient1.Dele then
     logit('Удалил с фтп '+GetNameFile(ts.Strings[i]))
     else logit('Неудалось удалить с фтп '+GetNameFile(ts.Strings[i]));
   end
   else logit('Не принял файл');
  Application.ProcessMessages;
except;
logit('Група №4: Ошибка файловой операции над '+GetNameFile(ts.Strings[i])+' ...');

end;
  ProgressBar2.Position:=i;
  Application.ProcessMessages;
end;
logit('Принял все файли по групе №4');

en:
ProgressBar2.Position:=ProgressBar2.Max;
ProgressBar3.Position:=6;
Application.ProcessMessages;
/// FTP close

FtpClient1.Quit;
try
memo1.Lines.SaveToFile(ExtractFileDir(lsdirfile)+'program.log');
deletefile(lsdirfile);
except;end;
logit('Конец сеанса работы с FTP');
/// End procedure InOut
Timer1.Enabled:=true;
form2.changeicon(4,'');
SpeedButton1.Enabled:=true;
end;

PM MAIL   Вверх
Matematik
Дата 12.2.2010, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

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



Proftpd ubuntu
тоже не полностью заливает

Это проблема внутри компонента.


Вру, заливалось в текстовом режиме, меняя #13#10 на #10, соответственно файл становился меньше.

Это сообщение отредактировал(а) Matematik - 12.2.2010, 20:12
PM MAIL WWW ICQ   Вверх
Akella
Дата 14.2.2010, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(dolphik @  10.2.2010,  17:40 Найти цитируемый пост)
заюзал со сборки OverbyteIcsV6

 используй 7ю версию, 6я, по-моему не поддерживается

Добавлено через 7 минут и 8 секунд
Попробуй использовать режим передачи Binary

Добавлено через 8 минут и 6 секунд
1. Посмотри примеры. Попробуй передать файл с помощью примера.
2. Посмотри логи сервера.
PM MAIL   Вверх
dolphik
Дата 15.2.2010, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Логи сервера говорят, что всё ок....залогинен,положил полностью файл...всё, ошибок нету
режим Binary и был, пробовал и выключать его - безрезультатно...
----
прикольная штука выходит... фаром подключился в текстовом режиме и получил такой же результат по размеру как и с этим компонентом ics'a. 
сделал непосредственно 
Код

  FtpClient1.Binary:=true;
  FtpClient1.Put;

результат такой же. В чём причина ? Либо компонент "не переключаеться" в бинарный режим именно с этим фтп сервером ?

параметры комопнента:
user posted image

Это сообщение отредактировал(а) dolphik - 15.2.2010, 11:40
PM MAIL   Вверх
dolphik
Дата 15.2.2010, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



эх !!! smile
сорцовая дока рулит:

Код

Properties:
  HostName      - FTP server host name or IP address
  UserName      - User name for authentication on FTP server
  PassWord      - Passwor needed for user, can be blank
  HostDirName   - Directory as knwon of FTP server
  HostFileName  - File name as known on FTP server
  LocalFileName - Local file name (complete path)
  Binary        - Select binary or ascii file transfert (Need to call TypeSet
                  or TypeSetAsync to send it to FTP server).

  (There are other less used properties, see code below)


другими словами, чтобы дёрнуть сервер на бинарный режим надо сказать ему TypeSet.
просто привык раньше работать готовой парой тройкой команд на Indy ))

Это сообщение отредактировал(а) dolphik - 15.2.2010, 12:08
PM MAIL   Вверх
Akella
Дата 15.2.2010, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(dolphik @  15.2.2010,  11:12 Найти цитируемый пост)
положил полностью файл...

т.е. принятый размер в байтах показывает правильно?

Добавлено через 2 минуты и 36 секунд
Цитата(dolphik @  15.2.2010,  11:12 Найти цитируемый пост)
фаром подключился в текстовом режиме и получил такой же результат

т.е. не весь файл закачивает на сервер? 


Код

              Log('Отправка файла: '+slFileListToUpload[h]);
              FtpClient1.HostFileName  := ExtractFileName(slFileListToUpload[h]);
              FtpClient1.localFileName := slFileListToUpload[h];

              FtpClient1.TypeBinary;
              FtpClient1.TypeSet;
              FtpClient1.DisplayFileFlag := false;

              if FtpClient1.Put then
                log('отправлен')
              else
                begin
                  log('Ошибка! Ошибка отправки файла');
                  log('Ошибка!' + FtpClient1.LastResponse);
                  log('Ошибка!' + FtpClient1.ErrorMessage);
                end;

              FtpClient1.TypeAscii;
              FtpClient1.TypeSet;


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

Запрещено:

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

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

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

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

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


 




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


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

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