Entwickler-Ecke

Internet / Netzwerk - Download per TFileStream und IdHttp.


damadmax - Mo 29.09.03 16:40
Titel: Download per TFileStream und IdHttp.
Situation:

Habe auf einem Server eine 1,5 MB grosse Datei.

Lade diese Datei per IdHttp.Get herunter. Der TFileStream wird per fmCreate geöffnet.

Die Datei ist nach ein paar Sekunden da und hat die exakte Grösse wie auch auf dem Server.

Das Problem ist nur: Die Datei enthält nur Müll.

Lösung: ????


greetz


BungeeBug - Mo 29.09.03 17:01

Hi,

hast du evl. nen bissel Code? :)


damadmax - Mo 29.09.03 17:49


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var
  http: TIDHttp;
  f: TFileStream;
begin
  http := TIDHttp.Create(Application.MainForm);
  try
    f := TFileStream.Create('test.dat',fmCreate);
    try
      http.Get('http://irgendeinserver.de/test.dat',f);
    finally
      f.Free;
    end;
  finally
    http.Free;
  end;
end;


btw: die IDHttp kompo funktioniert einwandfrei, da ich diese auch noch für eine text datei benutze. und deren download funktioniert. allerdings benutze ich dabei kein FileStream Objekt.

greeetz'n'thx


ErnestoChe - Mo 29.09.03 18:26

Hi,

damadmax hat folgendes geschrieben:
Die Datei ist nach ein paar Sekunden da und hat die exakte Grösse wie auch auf dem Server.

Das Problem ist nur: Die Datei enthält nur Müll.


Weil der FileStream noch nicht gefüllt ist. Er wurde nur schon mal mit der Grösse angelegt um dann mit den Bits vom Server während des Downloads gefüllt zu werden. Dass kann je nach Bandbreite eine gewisse Zeit in Anspruch nehmen.

Lösung: Du wartest bis der Download beendet ist.

MFG

- Ernesto -


damadmax - Mo 29.09.03 18:40

sollte die get methode nicht so lange warte bis sie fertig ist?
bzw. warum sollte sie das beim filestream nicht auch machen, sonst tut sie es ja.


greetz


ErnestoChe - Mo 29.09.03 18:53

Hi,

Get sollte erst zurückkehren, wenn der Download beendet ist. Ansonsten sehe ich in deinem Code keinen Fehler. Wo rufst denn deine Prozedur auf bzw. in welchem Ereigniss steht dein Code.

Auf jeden Fall scheint der Download nicht zu funktionieren. Dass die exakte Grösse schon da ist, hat wie ich schon erklärt hab nichts zu bedeuten. Das ist normal.

Versuche mal die Datei mit dem IE runterzuladen. Oder gib uns weitere Infos, die auf den Fehler hindeuten könnten.

MFG

- Ernesto -


damadmax - Mo 29.09.03 19:22

danke erstmal für die hilfe. wahrscheinlich hat der fehler garnichts mit meinem programm zutun. beide dateien funktionieren prima. btw: wenn ich sie mit norton commander (ja etwas alt aber funzt) öffne ist sie die richtige.
die besagte datei enthält virendefinitionen von freeav.de


das hier ist die original datei. so wie sie installiert wurde:
user defined image
mit nc betrachtet:
user defined image


das hier ist die datei vom server:
user defined image
mit nc betrachtet:
user defined image


hat jemand eine idee, warum notepad sowas macht?