Реализуйте что-то типа стека (массива), куда вы будете подкладывать новые файлы.
Параллельно огранизуйте функцию, которая слушает какой-то кастомный ивент типа «file-upload-added».
В функции реализуйте механизм выбора файлов из стека и отправляйте файлы на загрузку по очереди в бекграунде.
Я имею ввиду что-то типа этого:
var files = [];
.bind("file-upload-added", function() {
var file;
if (files.length) {
file = files.pop();
} else {
return;
}
$.ajax({
...
...
...
success: function() {
.trigger('file-upload-added');
}
})
});
.bind("file-upload-selected", function(file) {
files.push(file);
.trigger('file-upload-added');
})
Дальше допилите под свои нужды