Показать сообщение отдельно
  #9 (permalink)  
Старый 10.03.2014, 17:32
Новичок на форуме
Отправить личное сообщение для Ruslan1802 Посмотреть профиль Найти все сообщения от Ruslan1802
 
Регистрация: 16.02.2014
Сообщений: 6

XMLHttpRequest, мне же надо было процесс отслеживать. С $.post не получилось бы

Итог таков:
$(document).ready(function(){

$('#upload a').click(function(e){
$(this).parent().find('input[type="file"]').click();
e.preventDefault();
});

$('#upload input[type="file"]').change(function() {
     uploadFile(this.files);
	 $(this).val('');
});


var files_mas = new Array();
var maxSize = 1000000000000000; //max размер файла

var server = $('#upload').attr('action');
var file_server = $('#upload input[type="file"]').attr('name'); //имя пост запроса



function uploadFile(files) {

$.each(files, function(index, file) { 
if (file.size < maxSize) { 

 files_mas.push(file);
$('#status').append('<div class="progress progress-striped active" id="'+files_mas.length+'"><div class="progress-bar"  role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 0%"><span class="sr-only">45% Complete</span></div></div><div class="status"></div>');
   }
	else
	{
alert('Слишком большой файл');
}
});
		
		
}


function add_s(i, k) {
if(files_mas.length == 0) { alert('Все загрузки завершены!'); $('#upload input[type="submit"]').show();}
var form = new FormData(); // Создаем объект формы.
form.append('upload', files_mas[i]);

var dm = i + 1;

if(files_mas[i]) {


$.ajax({
      url: 'upload.php',
      type: 'post',
      dataType: 'text',
      data: form,
      cache: false,
      contentType: false,
      processData: false,
      forceSync: false,
      xhr: function(){
        var req = $.ajaxSettings.xhr();
        if(req.upload){
          req.upload.addEventListener('progress', function(event) {
            var percent = 0;
            var position = event.loaded || event.position;
            var total = event.total || e.totalSize;
            if(event.lengthComputable){
              percent = Math.ceil(position / total * 100);
            }

$('#'+k+'> div').attr('style', 'width: '+percent+'%').text(percent+'%');

          }, false);
        }

        return req;
      },
      success: function (data, message, xhr){
        //alert('ФАЙЛ | ' + files_mas[i].name + ' | УСПЕШНО ЗАГРУЖЕН!!!');

$('#'+k).remove(); 
add_s(0, ++k);
files_mas.splice(i, 1);

      }

});

} 

}
$('#upload').submit(function(e) { 
e.preventDefault(); 
if(files_mas.length != 0) {
$('#upload input[type="submit"]').hide();
add_s(0, 1);
}
});
});
Ответить с цитированием