From: Johannes Date: Tue, 15 Nov 2016 15:56:03 +0000 (+0100) Subject: Support multifile upload via the webinterface X-Git-Url: https://git.immae.eu/?a=commitdiff_plain;h=ecfbca9fd86e73ab6ae949e49578906ceda12a5b;hp=5be531a3b6df5ab59065ccc534b774261b3ad622;p=perso%2FImmae%2FProjets%2FNodejs%2FSurfer.git Support multifile upload via the webinterface --- diff --git a/app/index.html b/app/index.html index b1c7da6..80f9bdd 100644 --- a/app/index.html +++ b/app/index.html @@ -108,7 +108,7 @@
- +
diff --git a/app/js/app.js b/app/js/app.js index 739e9b1..9a2e532 100644 --- a/app/js/app.js +++ b/app/js/app.js @@ -129,21 +129,32 @@ function upload() { // detach event handler $(app.$els.upload).off('change'); - var file = app.$els.upload.files[0]; - var path = encode(sanitize(app.path + '/' + file.name)); + var length = app.$els.upload.files.length; + var done = 0; - var formData = new FormData(); - formData.append('file', file); + function uploadFile(file) { + var path = encode(sanitize(app.path + '/' + file.name)); - superagent.put('/api/files' + path).query({ username: app.session.username, password: app.session.password }).send(formData).end(function (error, result) { - app.busy = false; + var formData = new FormData(); + formData.append('file', file); - if (result && result.statusCode === 401) return logout(); - if (result && result.statusCode !== 201) return console.error('Error uploading file: ', result.statusCode); - if (error) return console.error(error); + superagent.put('/api/files' + path).query({ username: app.session.username, password: app.session.password }).send(formData).end(function (error, result) { + if (result && result.statusCode === 401) return logout(); + if (result && result.statusCode !== 201) console.error('Error uploading file: ', result.statusCode); + if (error) console.error(error); - refresh(); - }); + ++done; + + if (done >= length) { + app.busy = false; + refresh(); + } + }); + } + + for(var i = 0; i < length; i++) { + uploadFile(app.$els.upload.files[i]); + } }); // reset the form first to make the change handler retrigger even on the same file selected