function barr(num, status, funcstroke, prbar){
funcstroke = "prbar = $('#fs"+num+"').find('.bar');";
eval(funcstroke);
if(status==1){
prbar.width(15);
};
if(status==2){
prbar.width(25);
};
if(status==3){
prbar.width(45);
};
if(status==4){
prbar.width(65);
};
};
$('[type = submit]').click(function(eve){
eve.preventDefault();
var inputFile = document.getElementById('input').files;
var length = inputFile.length;
var i = 0;
var funcstr;
while(length > i&&i<8){
funcstr = "var form"+i+" = new FormData(); var xhr"+i+" = new XMLHttpRequest(); xhr"+i+".onreadystatechange = function(){ barr('"+i+"',xhr"+i+".readyState); }; form"+i+".append('photo', inputFile["+i+"]); xhr"+i+".open('post', '/s.php', true); xhr"+i+".send(form"+i+");";
eval(funcstr);
i++;
};
});
Вот так выглядит код ответственный за отправку файлов. Подозреваю что криво, но работает. Новый объект XMLHttpRequest приходится создавать каждый раз так как когда отправка всего разом, не получалось сделать отдельные прогресбары для файлов, и на сервер приходило почему-то два запроса, первый пустой. Так все нормально, но подозреваю что страшно замусоривает память.
Наверное попробую сделать так - буду хранить где-то список номеров "удаленных" пользователем файлов и при обходе files их просто не отправлять.
К сожалению эти все плюшки доступны только в chrome, firefox и последней опере. Для других придется доделывать альтернативу.