Я загружаю несколько файлов через XmlHTTPRequest и HTML5. У меня загрузился рабочий режим, но я хотел бы иметь индикатор выполнения для каждой загрузки файла. Однако код, который я использовал, использует последний индикатор выполнения для ВСЕХ загрузок файлов вместо каждой загрузки, используя свой собственный индикатор выполнения. Так что это в основном визуально на стороне клиента, но это меня очень раздражает. По какой-то причине я предполагаю, что событие, которое фиксирует ход загрузки файла, перезаписывает себя и использует последний индикатор выполнения. Здесь мой код:
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);
}
Я предполагаю, что правильное "ли" не получает правильное представление о событии "прогресс". Я подозреваю, что мне нужно какое-то привязку, чтобы сказать, что событие "прогресс" использует определенную переменную как "ли", но я не уверен, что мне не хватает.