kommt schon, einer weiß es doch bestimmt. hab nicht den blassesten schimmer wie ich die dateigröße ermitteln kann. bezüglich dem login-fehler in meinem vorherigen beitrag habe ich (auch hier in der
dp) gelesen, dass der server die
basic authentification nicht unterstützt.
die folgende funktion benutze ich, um eine datei herunterzuladen:
Delphi-Quellcode:
function GetFileFromInet(const fileURL, AFileNameToSave: String): Boolean;
Const
BufferSize = 1024;
Var
sAppName: String;
hSession, hURL: hInternet;
buffer: Array[1..BufferSize] Of Byte;
bufferLen: DWord;
mem: TMemoryStream;
Begin
Result := False;
sAppName := ExtractFileName(Application.ExeName);
hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, Nil, Nil, 0);
If ( hSession <> Nil ) Then
Begin
Try
hURL := InternetOpenURL(hSession, PChar(fileURL), Nil, 0, INTERNET_FLAG_RELOAD, 0);
If ( hURL <> Nil ) Then
Begin
Try
mem := TMemoryStream.Create;
Repeat // siehe unten
BufferLen := 0;
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
mem.Write(buffer, bufferlen);
Until bufferLen = 0;
mem.SaveToFile(AFileNameToSave);
mem.Free;
Result := True;
Finally
InternetCloseHandle(hURL);
End;
End;
Finally
InternetCloseHandle(hSession);
End;
End;
End;
in der gekennzeichneten schleife möchte ich den aktuellen fortschritt berechnen und dazu benötige ich eben die dateigröße der datei auf dem server.