Table Layout
Display the file queue as a structured table with columns for name, size, status, and actions.
Drag & drop files here
var uploader = new MultipleUpload(el, {
uploadUrl: '/api/upload',
onFileAdded: function(task) {
addTableRow(task);
},
onTaskProgress: function(task, pct) {
updateRowStatus(task.id, pct + '%');
},
onTaskComplete: function(task) {
updateRowStatus(task.id, 'Done');
},
onQueueRemove: function(task) {
removeTableRow(task.id);
}
});
The queue as table rows
The callbacks give you every event; where you render them is your choice. A table fits an admin screen because uploads then sort, align and filter alongside everything else on the page instead of sitting in a control of their own.
Columns that carry state
Name, size and progress are the obvious columns; status is the one that matters. A row stopped at 40% with nothing distinguishing “uploading” from “failed and gave up” is exactly the ambiguity the built-in queue was resolving for you.