Works with any backend npm install Zero dependencies
onChange Callback

Fires whenever the completedFiles array changes (upload complete or file removed).

(function() {
    var logEl = document.getElementById('log');
    function log(m) { var d = document.createElement('div'); d.className='pkg-log-entry'; d.textContent=m; logEl.appendChild(d); logEl.scrollTop=logEl.scrollHeight; }
    new MultipleUpload('#demo', {
        uploadUrl: '/api/upload',
        multiple: true,
        removable: true,
        onChange: function(files) {
            log('Files changed. Count: ' + files.length);
            files.forEach(function(f) { log('  - ' + f.fileName + ' (' + (f.guid||'no guid') + ')'); });
        }
    });
})();