HTTP Download Datei größe anzeigen



  • Hallo,

    habe die hier in der FAQ gefunden und wollte mal wissen, ob man auch die größe der Datei ermitteln kann. Wen ja, Wie?

    TFileStream *fs = new TFileStream(filename, fmCreate);
      IdHTTP1->Get(URL, fs);
      delete fs;
    

    MFG Fregger



  • Hallo,

    Schau mal nach den Eigenschaften von TFileStream. Z.Bsp. Position könnte da helfen.



  • Besser: sieh dir auch den Rest des FAQ-Beispieles an.



  • Jansen was genau meinst du? In dem FAQ Beispiel steht nix drinne von einer Dateigröße. http://www.c-plusplus.net/forum/viewtopic-var-t-is-72486.html . Ich will ja herausbekommen wie groß die Datei ist bevor man sie herunterladet. Ich schau mir mal soweil die Funktionen von TFileStream an 🙂



  • Was könnte sich wohl hinter AWorkCountMax verstecken ...

    Alternativ könnte es auch ein einfaches Get auf die URL tun (also ohne Stream), anschliessend wertet man dann IdHTTP::Response aus. Oder so ähnlich, habe keinen BCB zum Testen zur Hand.



  • Hallo,

    er zeigt mir nur die Bytes bei AWorkCountMax an, wenn die Datei heruntergeladen worden ist. Geht es auch ohne vorherigen download?



  • Hallo

    AWorkCountMax wird doch schon beim Event IdHTTP1WorkBegin übergeben. Was du dann mit dem Wert machst ist dir überlassen.

    bis bald
    akari



  • Hallo akari,

    ich will in meinem Programm eine Update funktion einbauen, dass Programm prüft ob neue Updates vorhanden sind. Wenn neue Updates vorhanden sind kommt ein fenster zum vorschein in dem ein Paar Informationen zu dem Update sind. Da will ich auch die Größe des Updates anzeigen lassen. Wenn ich nun das mit dem AWorkCountMax mache, ladet das Update schon herunter und dann erscheint erst die Größe des Updates. Ich will aber das man die Größe vorher sieht und dann auf den Button Update klicken soll, dass die Datei heruntergeladen wird.

    Versteht ihr was ich meine?

    MFG Fregger



  • Hallo

    soviel ich weiß ist das HTTP-Protokoll nicht in der Lage die größe eines Transfers im voraus auszugeben. Erst wenn der Download gestartet ist kann auch die Größe ermittelt werden. Das ist vor allem notwendig für dynamische Webseiten auf Basis von zum Beispiel php, wo ja erst beim konkreten Abruf eine echte HTML-Seite generiert wird undauch versendet wird.
    Wenn du wirklich feste Downloads mit vorheriger Größenangabe haben willst, must du FTP verwenden, denn genau dafür ist das File Transfer Protokoll da.

    bis bald
    akari



  • Danke akari, hab es jetzt über FTP gemacht und es funktioniert 🙂

    Label1->Caption = IdFTP1->Size("Update.exe");
    

    MFG Fregger



  • FDP ist doof! 🙂

    IdHTTP1->Head(URL);
    Caption = IdHTTP1->Response->ContentLength;
    


  • Jansen schrieb:

    FDP ist doof! 🙂

    IdHTTP1->Head(URL);
    Caption = IdHTTP1->Response->ContentLength;
    

    hehe danke Jansen, so habe ich es auch Probiert, nur statt Head hatte ich Get benutzt :p dankeschön


Anmelden zum Antworten