Fred K.: Uploadstatus mittels Ajax (Therie)

Hi

Folgende Überlegung:
Wenn ich ein Formular aufsetze, mit dem man eine Datei hochladen kann, könnte ich dann mittels Ajax den Upload-Status herausfinden?

Ich denke mir das so:
Man schreibt ein Formular (Mit einem type=file und einem type=submit). Nach dem Klick auf Submit läd das Script die Datei mittels POST hoch (sei es nun direkt über HTTP oder indirekt über Ajax-HTTP).
Danach überprüft ein JS-loop jede 5 Sekunden mittels einer Ajax-Technik (mit einem serverseitigen PHP-Scripts) wie groß mittlerweile die TEMP-Datei für das File ist und gibt es als Callback zurück (um es als Prozentzahl oder Ladebalken zu visualisieren)

Das Problem dass ich sehe wäre ggf., dass die Callback-Funktion ggf. den Upload der Datei behindern/abbrechen könnte.

Nun aber meine Frage:
Ist das alles großer Humbug den ich mir da erträumt habe oder könnte so was gehen? Ich will heute Abend nicht mich weinend ins Bett fallen lassen und den ganzen Tag dran geschrieben haben =)

MFG

  1. Hello,

    Ist das alles großer Humbug den ich mir da erträumt habe oder könnte so was gehen? Ich will heute Abend nicht mich weinend ins Bett fallen lassen und den ganzen Tag dran geschrieben haben =)

    ne, so großer Humbug dürfte das IMHO nicht sein. Ich hatte mal eine ASP Komponente auf einem Server laufen, die genau sowas (nur damals noch ohne AJAX) bereit gestellt hat. Die Frage ist nur, ob dich ein Zugriff auf die "temp"-Datei weiter bringt. Hast du mal geschaut, ob die wirklich während des Upload wächst, oder ob der Server die Daten irgendwo im Speicher hält, bevor er sie wegschreibt?

    MfG
    Rouven

    --
    -------------------
    He is entertaining both out of the car and in the car because if you tell him that a corner is almost flat then he is the guy who is going to try to take it flat even if it means shunting it the other side of it, he will come with the data and say 'hey, I may have crashed and destroyed the car, but I was flat-out'. That is an interesting quality that he has!  --  Team Member on Jacques Villeneuve
    1. Mhhh... da muss was dran sein, dass das nicht so einfach gehen soll. Die ganzen Scripts die ich dazu bisher fand setzten immer auf ein Perl Framework. Ich frage mich ob man es nicht auch nur mit PHP+Ajax realisieren kann...

      MFG

      1. Hallo Fred,

        Mhhh... da muss was dran sein, dass das nicht so einfach gehen soll. Die ganzen Scripts die ich dazu bisher fand setzten immer auf ein Perl Framework.

        Kannst Du hier bitte die Quellen deiner Fundstücke auflisten? Ich habe einen solchen Fortschrittsbalken auch schon eingesetzt, musste deswegen leider auf das CGI-Modul verzichten, weil dies erstmal das STDIN an sich reißt, und die Daten in ein anonymes Filehandle schreibt, auf welches man außerhalb des CGI-Moduls keinen Zugriff hat.

        Herzliche Grüße aus Weinsberg
        Helmut Weber

        --
        -------------------------------------------
        Mode ist eine Variable, Stil eine Konstante
        1. Also meine (OpenSource)Favoriten bisher sind:

          Cake
          Pro: Multiple-File Upload, sehr dynamisch
          Contra: Schlechte Dokumentation
          http://thinkingphp.org/demos/cake-timer/

          Rails Upload Progress
          Pro: sehr schick, erweiterte infos während des uploads
          Contra: Single-File Upload, Framework von 2MB als workaround
          http://sean.treadway.info/demo/upload/

          tesUpload
          Pro: sehr schick, Multiple-File Upload
          Contra: Schlechte Dokumentation, keine Demo
          http://tomas.epineer.se/tesupload/

          LightLoader
          Pro: Multiple-File Upload
          Contra: Nicht benutzerfreundlich genug
          http://www.seemysites.net/projFolder/uploader/

          A Progessbar Tuto
          Pro: Verständlich umzusetzen
          Contra: JSP (für mich ein Contra =) )
          http://www.learntechnology.net/content/ajax/ajax_upload.jsp

          MFG

          1. Hallo Fred,

            Vielen Dank für deine ausführliche Recherche!

            Cake
            Pro: Multiple-File Upload, sehr dynamisch
            Contra: Schlechte Dokumentation
            http://thinkingphp.org/demos/cake-timer/

            Genau das richtige für mich ;-)
            Der Uber-Uploader ist in Perl geschrieben, und verwendet das CGI-Modul. Das Problem mit der anonymen Temp-Datei wird dadurch umgangen, dass das Verzeichnis für die temporären Dateien vorgegeben wird.

            Rails Upload Progress
            Pro: sehr schick, erweiterte infos während des uploads
            Contra: Single-File Upload, Framework von 2MB als workaround
            http://sean.treadway.info/demo/upload/

            Wirklich traumhaft umgesetzt, aber ich scheue mich auch nur wegen einer "kleinen" Zusatzfunktion einen wahnsinnigen Wulst von "Requirements" zu erfüllen.

            Herzliche Grüße aus Weinsberg
            Helmut Weber

            --
            -------------------------------------------
            Mode ist eine Variable, Stil eine Konstante
            1. Cake
              Genau das richtige für mich ;-)

              Sehe ich genauso. Ich denke es wird auf Cake hinauslaufen. Allerdings schlage ich mich noch etwas mit der implementierung herum. Wenn du eine laufende Demo auf deinem Rechner hast würd eich mich freuen wenn du sie mir als zip geben könntest. Ich steige durch die Dokumentation einfach nicht durch.

              Rails Upload Progress
              Wirklich traumhaft umgesetzt, aber ich scheue mich auch nur wegen einer "kleinen" Zusatzfunktion einen wahnsinnigen Wulst von "Requirements" zu erfüllen.

              Auch hier stimme ich dir zu. Schön aber viel zu gross für so eine kleine Aufgabe.

              MFG

              1. Hallo Fred,

                Sehe ich genauso. Ich denke es wird auf Cake hinauslaufen. Allerdings schlage ich mich noch etwas mit der implementierung herum. Wenn du eine laufende Demo auf deinem Rechner hast würd eich mich freuen wenn du sie mir als zip geben könntest. Ich steige durch die Dokumentation einfach nicht durch.

                Etwas fertiges zum einfachen Zeigen habe ich leider nicht. Die Website von Cake ist wirklich nicht aufschlussreich. Aber lade Dir mal den Uber Upload herunter und schaue Dir den Quelltext an.

                Wenn Du noch weitere Fragen hast, können wir Dir im Forum bestimmt helfen.

                Herzliche Grüße aus Weinsberg
                Helmut Weber

                --
                -------------------------------------------
                Mode ist eine Variable, Stil eine Konstante
    2. ne, so großer Humbug dürfte das IMHO nicht sein. Ich hatte mal eine ASP Komponente auf einem Server laufen, die genau sowas (nur damals noch ohne AJAX) bereit gestellt hat. Die Frage ist nur, ob dich ein Zugriff auf die "temp"-Datei weiter bringt. Hast du mal geschaut, ob die wirklich während des Upload wächst, oder ob der Server die Daten irgendwo im Speicher hält, bevor er sie wegschreibt?

      Das Problem dürfte eher sein, rauszufinden wo dieses Datei ist und wie sie heißt. Da du ja ständig Requests machen musst um die Datei zu prüfen, weiß dass Skript nicht wie das System die einmal ausgewählte Datei zum hochladen benannt hat, d.h. es muss anhand einer Session ermittelbar sein, nach welcher Datei geschaut werden muss, das das geht hab ich auch schon gesehen, aber selber gemacht noch nicht.

      Struppi.

      --
      Javascript ist toll (Perl auch!)
  2. Hi

    Folgende Überlegung:
    Wenn ich ein Formular aufsetze, mit dem man eine Datei hochladen kann, könnte ich dann mittels Ajax den Upload-Status herausfinden?

    Hab sowas mal gefunden, Suchworte: Upload Ajax Progressbar...
    Mit Demo, sowas geht also.

    roro

    1. Stimmt natürlich. Das hätte ich vorher auch mal machen können.
      Ich war so in Gedanken dass ich den Wald vor lauter Bäumen nicht sah.

      Dank dir.

      MFG

  3. Moin!

    Nun aber meine Frage:
    Ist das alles großer Humbug den ich mir da erträumt habe oder könnte so was gehen? Ich will heute Abend nicht mich weinend ins Bett fallen lassen und den ganzen Tag dran geschrieben haben =)

    Als sportliche Herausforderung kann man sich mit sowas natürlich beschäftigen.

    Es ist allerdings meine feste Überzeugung, dass die Generierung eines Upload-Fortschrittsbalkens die alleinige Aufgabe des Browsers sein sollte. Und so allmählich scheint das auch in das Bewußtsein der Browserentwickler vorzudringen, dass es blöd ist, wenn jemand eine Datei hochlädt, und dann mitunter minutenlang optisch nichts passiert.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Hallo.

      Und so allmählich scheint das auch in das Bewußtsein der Browserentwickler vorzudringen, dass es blöd ist, wenn jemand eine Datei hochlädt, und dann mitunter minutenlang optisch nichts passiert.

      Das wäre eine erfreuliche Entwicklung, aber wo siehst du die?
      MfG, at