From cd949c4f2022919b258272680525b482d871ad5b Mon Sep 17 00:00:00 2001 From: j Date: Wed, 13 Jan 2016 21:47:51 +0530 Subject: [PATCH] upload files one by one --- static/js/utils.js | 60 +++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 24 deletions(-) diff --git a/static/js/utils.js b/static/js/utils.js index f4dfef3..a02a280 100644 --- a/static/js/utils.js +++ b/static/js/utils.js @@ -1012,31 +1012,43 @@ oml.updateDebugMenu = function() { }; oml.supportedExtensions = ['pdf', 'epub', 'cbr', 'cbz']; -oml.upload = function(files, callback) { - var request = new XMLHttpRequest(), - url = '/api/upload/'; - request.onreadystatechange = function() { - if (request.readyState == 4) { - if (request.status == 200) { - callback(JSON.parse(request.responseText), null); - } else { - callback(null, { - code: request.status, - text: request.statusText - }); - } - } - }; - var formData = new FormData(); - for (var i=0; i < files.length; i++) { - var extension = Ox.last(files[i].name.split('.')); + +oml.upload = function(fileslist, callback) { + var files = [], ids = []; + for (var i = 0; i < fileslist.length; i++) { + var extension = Ox.last(fileslist[i].name.split('.')); if (Ox.contains(oml.supportedExtensions, extension)) { - formData.append('files', files[i]); + files.push(fileslist[i]); } } - if (oml.user.ui._list[0] == ':' && oml.user.ui._list.length > 1) { - formData.append('list', oml.user.ui._list.slice(1)); - } - request.open('post', url, true); - request.send(formData); + Ox.serialForEach(files, function(file, index, array, next) { + var request = new XMLHttpRequest(), + url = '/api/upload/'; + request.onreadystatechange = function() { + if (request.readyState == 4) { + if (request.status == 200) { + next(); + var response = JSON.parse(request.responseText); + ids.concat(response.data.ids); + } else { + callback(null, { + code: request.status, + text: request.statusText + }); + } + } + }; + var formData = new FormData(); + formData.append('files', file); + if (oml.user.ui._list[0] == ':' && oml.user.ui._list.length > 1) { + formData.append('list', oml.user.ui._list.slice(1)); + } + request.open('post', url, true); + request.send(formData); + }, function() { + callback({ + 'status': {'code': 200}, + 'data': {'ids': ids} + }); + }); };