HTML5 Datei-Upload mit mehreren Balken

Ich bin das hochladen mehrerer Dateien per XmlHTTPRequest und HTML5. Ich habe das hochladen funktioniert Prima, aber ich würde gerne eine Fortschrittsanzeige für jede Datei hochladen geht. Den code habe ich, aber nutzt die letzten Fortschrittsbalken für ALLE Datei-uploads und nicht jeder laden mit seiner eigenen Fortschrittsbalken. So dies ist vor allem visuell auf der client-Seite, aber es ist wirklich ärgerlich mich. Für einige Grund ich ' m, vorausgesetzt, dass das Ereignis, misst den Fortschritt des Datei-upload überschreibt sich selbst und nutzt die letzten progress-bar. Hier ist mein code:

var files = event.dataTransfer.files;

    //iterate over each file to upload, send a request, and attach progress event
    for (var i = 0, file; file = files[i]; i++) {
        var li = $("<li>" + file.name + "<div class='progressbar'></div></li>");

        //add the LI to the list of uploading files
        $("#uploads").append(li);

        //fade in the LI instead of just showing it
        li.hide().fadeIn();

        var xhr = new XMLHttpRequest();

            xhr.upload.addEventListener('progress', function(e) {
                var percent = parseInt(e.loaded / e.total * 100);
                li.find(".progressbar").width(percent);
            }, false);

            //check when the upload is finished
            xhr.onreadystatechange = stateChange;

            //setup and send the file
            xhr.open('POST', '/attachments', true);
            xhr.setRequestHeader('X-FILE-NAME', file.name);
            xhr.send(file);
        }

Gehe ich davon aus, dass die richtige "li" ist nicht immer richtig Lesen, indem Sie die "progress" - event. Ich vermute es gibt irgendeine Art von Bindung habe ich zu tun, zu sagen, die "progress" - Ereignis zu verwenden, eine bestimmte variable, wie es ist "li", aber ich bin mir nicht sicher, was mir fehlt.

InformationsquelleAutor Dan L | 2011-07-18
Schreibe einen Kommentar