Ajax File Upload - Prozente werden nicht richtig angezeigt

  • Mit 3.6 ist es ja auch möglich Dateien per Ajax zu senden.

    Hab dann bei hacks.mozilla mal vorbeigeschaut und mir was zusammen gebastelt.
    Der Upload funktionert soweit nur leider wird die Anzeige für die Prozente nur einmal aktualiesiert und
    dann nichtmal mit 100 % sondern immer etwas zwischen 19 und 40% aber das Bild wurde fehlerfrei hochgeladen.
    Ich hab mich auch an dem Quelltext von http://demos.hacks.mozilla.org/openweb/uploadingFiles/ gehalten bzw mir
    das Javascript angeschaut : http://demos.hacks.mozilla.org/openweb/uploadingFiles/main.js

    Warum funktioniert das denn nun nicht?
    Jemand eine Idee?

    Falls wer fragen möchte warum ich hier frage: Ich hab gelesen das es zur Zeit nur mit dem FF funktioniert also
    dacht ich mir post ich das mal hier.

    Leider habe ich keine Beispiel PHP Datei gefunden ausser eine und nach dessen weg bin ich dann auch gegangen.
    Ich weiss leider nicht ob es auch was damit zu tun haben kann!

    Mein Uploadscript schaut so aus:

    var builder ist leider notwendig da ich sonst im PHP Script die Datei nicht bekomme (weil ich nicht weiss wie es geht
    wenn ich nur xhr.sendAsBinary(files[0].getAsBinary()); benutzt)

    Durch builder kann ich den Namen des Uploadfeldes angeben womit ich dann im PHP Script die Datei weiter verarbeiten kann.

    Das Script sieht simpel so aus:

    Wie müsste ich das denn machen wenn ich einfach xhr.sendAsBinary(files[0].getAsBinary()); benutzen möchte?

    Vielleicht bin ich auch nur zu blöd um es zu finden.

    Helft mir auf die Sprünge bitte :)

    Schönen Nachmittag wünsch ich

    Edit: Ich teste das ganze mit FF 3.6 auf Windows unter xampp

  • Zitat

    weil ich nicht weiss wie es geht wenn ich nur xhr.sendAsBinary(files[0].getAsBinary()); benutzt

    Einfaches Upload-Formular mit Preview analog zum Mozilla-Beispiel:
    upload.html

    Gegenüber dem Mozilla-Beispiel leicht modifiziert:
    script.js


    Die Preview ist analog zum Mozilla-Beispiel, die Fortschrittsanzeige ist lediglich ein String in einem p-Element. Letzteres läuft aber sauber durch, wenn auch für kleine Dateien kaum zu sehen.
    Die Datei wird nur der Einfachheit halber beim Senden nochmal von der Platte geholt. Dabei übergebe ich statt dem Bild für das Update der Preview-Ansicht (nicht benötigt) einfach den MIME-Type an FileUpload(). Selbiger wird dann als Content-Type-Header mitgeschickt, damit ihn der Server verarbeiten kann.

    Dein PHP-Skript abgewandelt:
    process.php


    Den Content-Type über die Header-Variablen auslesen, daraus den Dateinamen nach deinem Muster generieren und den POST-Body direkt in die Datei schreiben.