Показать сообщение отдельно
  #1 (permalink)  
Старый 09.01.2015, 07:13
Аватар для Sanu0074
Аспирант
Отправить личное сообщение для Sanu0074 Посмотреть профиль Найти все сообщения от Sanu0074
 
Регистрация: 16.12.2012
Сообщений: 80

Ожидание окончания загрузки файла
Здравствуйте. Вот у меня такая задача, пишу jQuery плагин, внутри которого есть загрузка файлов, такая последовательность действий, извлекаются все поля type=file, далее перебирается все, если есть атрибут multiple у текущего - то все что в нем отправляется по очереди и так до конца перебора всех полей. Мне необходимо заставить скрипт ждать пока закончится отправку текущего файла и перейти к след итерации перебора (each). Вот то что я написал:
var sel = $('.file');
                if(sel.length>0){
                    console.log('Saved files, total fields: '+sel.length);
                    
                    
                    function sendFile(fd){
                        $.element.stateUpload = true;
                        
                        $.ajax({
                            type: 'POST',
                            url: HOST+'/uploadFile',
                            data: fd,
                            processData: false,
                            contentType: false,
                            success: function(data) {
                                $.element.stateUpload = false;
                                console.log(data);

                            },
                            error: function(data) {
                                $.element.stateUpload = false;
                                console.log(data);
                            
                            }
                        });
                    }
                    
                    
                    $.each(sel,function(){  //отправка всех файлов по очереди даже если multiple - то по одному
                        
                        var fd = new FormData();
                            fd.append('elementID', data.elementID);
                            fd.append('type',$(this).data('file'));
                            var file = $(this)[0].files[0];
                            if($(this).hasAttr('multiple')){
                                var input = document.querySelector('[data-file="'+$(this).data('file')+'"]').files;
                                for (var i = 0; i < input.length; i++){
                                    fd.append('file',input[i]);
                                    sendFile(fd);
                                }
                            }else{
                                fd.append('file', file);
                                sendFile(fd);
                            }
                            
                    });

Тут еще неплохо было бы выдать alert(), после окончания загрузки всех файлов из очереди. Я лепил интервалы, ничего толкового не вышло, помогите разобраться!
Ответить с цитированием