Works with any backend npm install Zero dependencies

Manual Upload

With autoUpload: false, files are queued but not uploaded until the user clicks the Upload button.

Drag & drop files here
<div id="myUploader" class="mu-uploader">...</div>
<button id="uploadBtn">Upload All</button>
var uploader = new MultipleUpload(document.getElementById('myUploader'), {
 uploadUrl: '/api/upload',
 autoUpload: false // Files queued, not uploaded automatically
});

document.getElementById('uploadBtn').addEventListener('click', function() {
 uploader.upload(); // Manually trigger upload
});

Making the user press the button

autoUpload defaults to true, so files transfer the moment they are selected. Set it false and they queue instead, waiting for upload(). The user gets a chance to review the list, remove a mistake, and start deliberately.

When the delay is worth it

Large files, metered connections, or a form where the file is one field among several and the user may still change their mind. Auto-upload is the better default for a single small attachment; manual is better when the upload is a commitment, because cancelling before it starts costs nothing and cancelling halfway costs everything already sent.