Sciąganie pliku z adresu ftp lub ze strony internetowej

0

Mam taki problem że funkcjia której uzywam do sciagniecia pliku działa ale 1 raz
Nastepny raz gdy sciagam ten sam plik pobiera go z tempa jak to ominac na systemie 98 i 2000


dzieki
0

Może pochwalisz się tą funkcją, jasnowidzami nie jesteśmy co namalowałeś ;)

0

procedure TForm.Download(const URL: String; FileName: String);
var
{Bufor zawierający ściągnięty fragment pliku}
Buffer : array[1..1024] of Byte;
hSession, hURL : HINTERNET;
dwRead, dwBufLen, dwIndex, dwSize : DWORD;
F : File;
pBuf : Pointer;
TotalRead : Integer;
begin
hSession := InternetOpen('Fast Download', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
Application.ProcessMessages;

try
{Otwarcie podanego adresu URL}
hURL := InternetOpenURL(hSession, PChar(URL), nil, 0, 0, 0);
Application.ProcessMessages;

dwBufLen := 1024;
dwIndex := 0;
GetMem(pBuf, dwBufLen);

{Pobranie informacji na temat wielkości pliku}
HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH, pBuf, dwBufLen, dwIndex);
dwSize := StrToInt(StrPas(pBuf));
ProgressBar.Max := (dwSize div 1024);

FreeMem(pBuf, dwBufLen);

try
AssignFile(F, FileName);
try
Rewrite(F, 1);
repeat
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), dwRead);
BlockWrite(F, Buffer, dwRead);
TotalRead := TotalRead + dwRead;

   Application.ProcessMessages;
   Label_Postep.Caption := 'Pobrano ' + IntToStr(TotalRead div 1024) + ' kB z ' + IntToStr(dwSize div 1024) + ' kB';
   ProgressBar.Position := TotalRead div 1024; // 1
  until dwRead = 0;
 finally
  CloseFile(F);
 end;

finally
InternetCloseHandle(hSession);
end;
finally
InternetCloseHandle(hURL); // 2
end;

// pobrano...
end;

Kod mam podobny ale kiedy juz raz plik zciagne to następny raz pobiera go z tempa.
Jak spowodować zeby zawsze pobierał plik z internetu a nie z temp?

0

Moze skorzystaj z indy INDY

0

Moze i bydziałało ale nie wiem gdzie mam wpisac adres storny internetowej skad ma pobrac plikj?
Chciał bym pobrac plik zeby pokazywało postep pobierania i zeby kazdym razem pobierał go ze strony a nie z tempa
.

0

nie wpisujesz adresu ftp uzywajac idftp, a pare razy wywolujesz IdFTP1.ChangeDir aby przejsc do wybranego katalogu, a potem pobierasz plik IdFTP1.Get

postep pobierania mozesz uzyskac obslugujac zdarzenie OnWork idFtp

1 użytkowników online, w tym zalogowanych: 0, gości: 1