Works with any backend npm install Zero dependencies

Form Integration

Integrate the uploader with a standard HTML form. File GUIDs are stored in hidden inputs and submitted with the form.

Drag & drop files here
var hiddenInputs = document.getElementById('hiddenInputs');
var uploader = new MultipleUpload(el, {
 uploadUrl: '/api/upload',
 autoUpload: true,
 onTaskComplete: function(task) {
 // Add hidden input with file GUID for form submission
 var input = document.createElement('input');
 input.type = 'hidden';
 input.name = 'fileGuids[]';
 input.value = task.response.fileId || task.id;
 hiddenInputs.appendChild(input);
 }
});

form.addEventListener('submit', function(e) {
 var formData = new FormData(form);
 // formData now includes title, description, and all fileGuids[]
});

References, not bytes

The uploader transfers files in the background and keeps their GUIDs in a hidden input, so the form posts a short list of identifiers. Submitting is instant no matter how much was uploaded, and the request stays small.

The server side is bookkeeping

Your form handler associates the GUIDs with the record rather than parsing multipart data. Treat them as untrusted input like any other field — a GUID in a POST proves only that someone sent it, so check it belongs to the current session before acting.