Per-File Progress

Demo uploads land in a temporary store and are swept after 60 minutes. To keep files, handle FileUploaded — see Single File for the complete save pattern.
Individual Progress Per File

Track upload progress independently for each file. Every file gets its own progress bar and status indicator in a custom file list.

What you should see: an individual bar per file, so one slow file is visible instead of being averaged into the batch.
onTaskStart: function(task) {
 // create a row with its own progress bar
 list.appendChild(createFileRow(task));
},
onTaskProgress: function(task, pct) {
 var row = document.getElementById('file-' + task.id);
 var safePct = clampPercent(pct);
 row.querySelector('.fill').style.width = safePct + '%';
 row.querySelector('.pct').textContent = safePct + '%';
},
onTaskComplete: function(task) {
 row.querySelector('.fill').style.background = '#10b981';
}