slave: Dateigröße vor dem Upload ermitteln

Hallo,

Wie kann ich möglichst mit PHP die Dateigröße vor dem Upload ermitteln bzw. vor dem kopmletten Upload.
alleine mit dem Stichwort content-lenght-header komme ich nicht sehr weit.. wie soll das genau funktionieren? oder kennt jmd eine bessere methode?

Die Anwender denen ich diese Überprüfung abnehmen möchte wissen nicht wie sie selber die Dateigröße ermittlen können! also keine überflüssigen kommentare bitte.

Bin dankbar für jede Antwort.
Danke
slave

  1. Die Anwender denen ich diese Überprüfung abnehmen möchte wissen nicht wie sie selber die Dateigröße ermittlen können! also keine überflüssigen kommentare bitte.

    ggf mit einem activex-object oder mit java - konventionelle webtechniken werden mit hoher wahrscheinlichkeit scheitern

  2. Hi,

    Wie kann ich möglichst mit PHP die Dateigröße vor dem Upload ermitteln bzw. vor dem kopmletten Upload.

    Gar nicht.

    alleine mit dem Stichwort content-lenght-header komme ich nicht sehr weit.. wie soll das genau funktionieren?

    Gar nicht.

    Bei einem Dateiupload ueber HTTP wird dein PHP-Script erst gestartet, nachdem die Datei bereits komplett am Server angekommen ist.

    oder kennt jmd eine bessere methode?

    Java-Applet oder Flash waeren Techniken, die das vielleicht bereits auf dem Client erledigen koennten.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Wie kann ich möglichst mit PHP die Dateigröße vor dem Upload ermitteln bzw. vor dem kopmletten Upload.

      Gar nicht.

      alleine mit dem Stichwort content-lenght-header komme ich nicht sehr weit.. wie soll das genau funktionieren?

      Gar nicht.

      Schon mal auf Rapidshare was hochgeladen?
      Dort kann man bis zu 200 MB grosse Datein uploaden, kurz nach dem Start des Uploads, wird bereits die Dateigrösse angezeigt + die Uploadgeschwindigkeit.
      Wie erklärst du dir das?

      Gruss

      1. Schon mal auf Rapidshare was hochgeladen?
        Dort kann man bis zu 200 MB grosse Datein uploaden, kurz nach dem Start des Uploads, wird bereits die Dateigrösse angezeigt + die Uploadgeschwindigkeit.

        nein, es wird etwas angezeigt, was nur so aussieht als wäre es das, wofür du es hältst - garnicht ist schon richtig

        Wie erklärst du dir das?

        sieh dir den quelltext an

        rapidshare prüft nicht VOR dem upload, wie groß die datei ist, sondern während - und zwar nicht über den http-header sondern über einen xmlhttprequest, der den server 1x in der sekunde befrägt, wieviel denn schon hochgeladen ist - aus dem wird dann errechnet, wie langs noch dauert

        die dafür zustänigen funktionen sind p() und o()

        1. nein, es wird etwas angezeigt, was nur so aussieht als wäre es das, wofür du es hältst - garnicht ist schon richtig

          Ja stimmt schon, bis auf byte genau wirds nicht angezeigt, und auch nicht bis auf MB genau, aber "pi * daumen" komtm schon hin :)

          Wie erklärst du dir das?
          sieh dir den quelltext an

          Später! Jetzt auf der Arbeit bisschen schlecht :)

          rapidshare prüft nicht VOR dem upload, wie groß die datei ist, sondern während - und zwar nicht über den http-header sondern über einen xmlhttprequest, der den server 1x in der sekunde befrägt, wieviel denn schon hochgeladen ist - aus dem wird dann errechnet, wie langs noch dauert

          Also ist es doch möglich, mit Hilfe von XML oder wie ?

          1. Also ist es doch möglich, mit Hilfe von XML oder wie ?

            wie schon erwähnt, es ist unmöglich, dass der server VOR dem abschicken des formulars weiß, wie groß die datei sein wird

            lediglich während der "download" schon läuft und der server bereits daten empfängt

            um auszuwerten, wieviel da schon angekommen ist, benötigst du eine serverseitige scriptsprache wie zb php (ein beispiel hat dir chris schon verlinkt)

            die sache ist aber nicht trivial, da du "mit hilfe von xml oder wie" schreibst, solltest du dich erst ernsthaft in die materie einlesen, bevor du weitermachst

            1. lediglich während der "download" schon läuft und der server bereits daten empfängt

              Villeicht habe ich dich missverstanden, aber ich sehe da einen wiederspruch.
              Wenn der Upload einer Datei (sagen wir mal 100 MB genau) läuft, und ich gerade erst 5 MB hochgeladen habe, wie kann dann der Server wissen wie gross die datei ist, um zu schätzen wie lange es noch dauert (auch wenn diese anzeige immer lügt)???

              1. Hi,

                Wenn der Upload einer Datei (sagen wir mal 100 MB genau) läuft, und ich gerade erst 5 MB hochgeladen habe, wie kann dann der Server wissen wie gross die datei ist, um zu schätzen wie lange es noch dauert

                Aus einer vom Client im HTTP-Header gemachten Angabe, wie viel Daten er insgesamt zu senden gedenkt.

                MfG ChrisB

                --
                „This is the author's opinion, not necessarily that of Starbucks.“
              2. Wenn der Upload einer Datei (sagen wir mal 100 MB genau) läuft, und ich gerade erst 5 MB hochgeladen habe, wie kann dann der Server wissen wie gross die datei ist, um zu schätzen wie lange es noch dauert (auch wenn diese anzeige immer lügt)???

                der server weiss doch, wie groß die datei ist, sobald der http-upload läuft - genau dieses information gilt es über einen xmlhttprequest zu lesen und wieder in die seite zu schreiben

                was genau hast du an chris' verlinktem artikel nicht verstanden?

                ps: im verlinkten artikel nach "total" suchen und du wirst fündig

                aufgrund der funktionsweise von http kann der server ab unmöglich die tatsächliche gesamtgröße wissen - hierzu kannst du dich mit http chunking auseinandersetzen - zwar wird das im falle eines dateiuploads einer einzelnen datei aus dem browser keine rolle spielen, aber es ist ein fakt, dass der server die endgültige größe nicht wissen kann, bis er nicht den letzten chunk erhalten hat

      2. Hi,

        Schon mal auf Rapidshare was hochgeladen?

        Nein.

        Dort kann man bis zu 200 MB grosse Datein uploaden, kurz nach dem Start des Uploads, wird bereits die Dateigrösse angezeigt + die Uploadgeschwindigkeit.
        Wie erklärst du dir das?

        Hast du irgendeinen Anhaltspunkt dafuer, dass dort PHP zum Einsatz kommt?

        (Der Fortschritt des Uploads wird laut Quelltext in einem Iframe angezeigt. Ja, das kann man wohl mit PHP auch irgendwie machen - Stichwort File Upload Hooks (s.a. hier). Und damit steht einem wohl auch die Groesse des Uploads zur Verfuegung. Aber APC steht nicht per Default in PHP zur Verfuegung.)

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Hast du irgendeinen Anhaltspunkt dafuer, dass dort PHP zum Einsatz kommt?

          Nein!
          Das habe ich aber auch nirgends behauptet ;)