Encoder: Upload mit Ajax

Hallo Forum
Ich möchte einen Upload mittels AJAX realisieren. Die Antwort des Requests soll direkt in der aufrufenden Seite erscheinen, daher soll es kein normaler Upload mit Neuladen der Seite sein.

Der Upload mit Neuladen funktioniert, mein serverseitiges Script passt also schon mal.
Clientseitig hab ich bisher schon AJAX gemacht, auf diese Art

request = ... Request erzeugen
request.open('post', url, true);
request.onreadystatechange = replyHandler;
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
request.send("feld1=Wert1&feld2=Wert2");

Ich hab nur keine Idee wie ich da eine Datei aus der Dateiauswahlbox rein kriege.

Beispiele find ich zwar etliche, nur leider immer mit Progressbar oder externen Libs und so, alles voll kompliziert und undurchsichtig.
Ist das echt so ein wahnsinns Unterschied zu dem was ich bisher schon mache?

  1. request.open('post', url, true);
    request.onreadystatechange = replyHandler;
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    request.send("feld1=Wert1&feld2=Wert2");

    Das kannst du vergessen. Datei-Upload ist etwas anderes als Formulare posten.

    Ich hab nur keine Idee wie ich da eine Datei aus der Dateiauswahlbox rein kriege.

    Siehe </archiv/2011/3/t204009/#m1380767>.

    Ist das echt so ein wahnsinns Unterschied zu dem was ich bisher schon mache?

    Ja.

    Mathias

    1. Ist das echt so ein wahnsinns Unterschied zu dem was ich bisher schon mache?

      Ja.

      Shit... Das liest sich ja furchtbar.
      Dann gibts ein Popup für den Upload, das kann sich dann vor mir aus neu laden.

      1. Shit... Das liest sich ja furchtbar.
        Dann gibts ein Popup für den Upload, das kann sich dann vor mir aus neu laden.

        Mit FormData und der files-Liste ist es wie gesagt noch am einfachsten, sofern der Browser es unterstützt.

        Natürlich kommst du ohne Feature-Abfrage nicht aus, und einen Fallback mit normalem Seitenwechsel, Popup oder Iframe brauchst du ohnehin.

        Mathias

        1. Natürlich kommst du ohne Feature-Abfrage nicht aus, und einen Fallback mit normalem Seitenwechsel, Popup oder Iframe brauchst du ohnehin.

          iframe ist auch gut. Das war mir beim rumsuchen eigentlich schon etwas zu exotisch, aber damit hätte ich wenigstens so etwa das gewünschte.
          Bin grad soweit dass mal irgendwas irgendwie funktionieren sollte, statt auch schön und elegant und so zu sein :-)

  2. http://www.atwebresults.com/php_ajax_image_upload/

    das ist zwar kein echtes Ajax, aber damit hab ich ganz gute Erfahrungen gemacht. Die Datei ajaxupload.php kann man sich natürlich belibig anpassen.
    Wichtig ist eigentlich nur die datei ajaxupload.js, denn diese sorgt dafür, das die ausgabe von der datei die das formular verarbeitet wird dynamisch in die seite geladen wird...