![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
пытаюсь риализовать скачтвание данных с ФТП через 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
|
|||
|
|||
|
гдето видел такое
я настраивал ИЕ и все пахало ИЕ всю винду перебивает под прокси П.С. мне помогло зделал шоб ИЕ принимал настройки с других браузеров и все но тот вопрос спорный каждая 9 винда не раздуплилась Последний раз редактировалось nemo, 08.03.2009 в 00:08. |