Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.02.2009, 15:43
soleiman soleiman вне форума
Прохожий
 
Регистрация: 15.02.2009
Сообщения: 1
Репутация: 10
Печаль FTP через HTTP proxy

пытаюсь риализовать скачтвание данных с ФТП через HTTP прокси с помощью IndyTCP компонент

Код:
function TFtpThread.DownloadFile(sFileName:String;fileIndex:int64):Boolean;
var
    sHost:String;
    sURL:String;
    sPath,s:String;
    bDownloadingData:Boolean;
    ts:TStringlist;
    i:Integer;
    ms:TMemoryStream ;
begin
  bExit:=false;
  Synchronize(UpdateStart);
  bSaveFileToTempDir:=false;
  sPath:=mFTPObject.FTPData.OutputDir; //'c:\temp\hirlam\' ;
  idtcp1.Port :=mFTPObject.FTPData.ProxyPort;
  idtcp1.Host :=mFTPObject.FTPData.ProxyServer;
  sURL:='ftp://' + mFTPObject.FTPData.FTPUserName + ':' + mFTPObject.FTPData.FTPPassword + '@'+GetHostName(mFTPObject.FTPData.FTPHostName) + FTPRemoteDir + sFileName;   
  sHost:=GetHostName(mFTPObject.FTPData.FTPHostName) + ':' + inttostr(mFTPObject.FTPData.FTPPort);  
  if idtcp1.Connected then idtcp1.Disconnect;
  try
    idtcp1.Connect(60);
  except
    on E: Exception Do begin
        fMessage:=E.Message + #13#10 + sFileName;
        Synchronize(UpdateCaption);
        result:=False;
        Exit;
    end;
  end;
  s:='GET ' + sURL + ' HTTP/1.1';
  idtcp1.WriteLn(s);
  s:='Host ' + sHost;
  idtcp1.WriteLn(s);
  idtcp1.WriteLn();
  bDownloadingData:=false;
  try
    ms:=TMemorystream.create();
  while true do begin
   try
    if bDownloadingData=False then begin
      s:=idtcp1.ReadLn;
      if pos('close',s)>0 then begin
        s:=idtcp1.ReadLn;
        bDownloadingData:=True;
        i:=0;
      end;
    end else begin
       idtcp1.ReadStream(ms,500);
    end;
   except
      break;
   end;
   if bExit then break;
  end{While};
  try
    ms.SaveToFile(sPath + sFilename);
  except
    ms.SaveToFile('c:\temp\' + sFilename);
    bSaveFileToTempDir:=true;
  end;
  //progressbar1.Position :=0;
  result:=true;
  Synchronize(UpdateEnd);
  finally
    ms.free;
  end;
end;

вопрос в том что не всегда файл качается до конце. Только если idtcp1.ReadStream(ms,1); то в этом случае нормально качается, но очень мелено.
размер файл тоже заранее не определить поскольку прокси возвращает в кб-тах округленный размер файла.

помогите пожалуйста .

спасибо.
Ответить с цитированием
  #2  
Старый 07.03.2009, 23:43
nemo nemo вне форума
Прохожий
 
Регистрация: 07.03.2009
Сообщения: 3
Репутация: 10
Вопрос бери

гдето видел такое
я настраивал ИЕ и все пахало
ИЕ всю винду перебивает под прокси
П.С. мне помогло зделал шоб ИЕ принимал настройки с других браузеров и все
но тот вопрос спорный каждая 9 винда не раздуплилась

Последний раз редактировалось nemo, 08.03.2009 в 00:08.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter