Подтвердить что ты не робот

Загрузка файла jQuery - как распознать, когда все файлы загружены

Я использую плагин загрузки файла jQuery.

Я хотел бы иметь возможность инициировать событие, когда все выбранные файлы завершили загрузку. Пока у меня есть событие для выполнения действия, когда файл выбран для загрузки и когда каждый конкретный файл заканчивает загрузку - есть ли способ обнаружить, что все выбранные файлы закончили загрузку?

Фактическое приложение находится здесь http://repinzle-demo.herokuapp.com/upload

Мое поле ввода выглядит следующим образом:

<div id="fine-uploader-basic" class="btn btn-success" style="position: relative; overflow: hidden; direction: ltr;">

Мой script код выглядит следующим образом:

<script>
        $(function () {
            $('#fileupload').fileupload({
                dataType: 'json',
                add: function (e, data) {   // when files are selected this lists the files to be uploaded
                    $.each(data.files, function (index, file) {
                        $('<p/>').text("Uploading ... "+file.name).appendTo("#fileList");
                    });
                    data.submit();
                },
                done: function (e, data) {  // when a file gets uploaded this lists the name
                    $.each(data.files, function (index, file) {
                        $('<p/>').text("Upload complete ..."+file.name).appendTo("#fileList");
                    });
                }
            });
        });
    </script>

Я обрабатываю запрос контроллером Play Framework (Java), который выглядит следующим образом:

це

c static void doUpload(File[] files) throws IOException{

        List<ImageToUpload> imagesdata = new ArrayList<ImageToUpload>();
               //ImageToUpload has information about images that are going to be uploaded, name size etc.

        for(int i=0;i<files.length;i++){
            Upload upload = new Upload(files[i]);
            upload.doit(); //uploads pictures to Amazon S3
            Picture pic = new Picture(files[i].getName());
            pic.save(); // saves metadata to a MongoDB instance
            imagesdata.add(new ImageToUpload(files[i].getName()));
        }

        renderJSON(imagesdata);
    }
4b9b3361

Ответ 1

Я думаю, что вы ищете событие "stop":

$('#fileupload').bind('fileuploadstop', function (e) {/* ... */})

как сказано в документации :

Обратный вызов для остановки загрузки, эквивалентный глобальному событию ajaxStop (но только для загрузки файлов).

Вы также можете указать функцию создания плагина, передав ее как параметр

$('#fileupload').fileupload({
        stop: function (e) {}, // .bind('fileuploadstop', func);
    });

Ответ 2

$('#fileupload').bind('fileuploadprogress', function (e, data) {
    // Log the current bitrate for this upload:
    console.log(data.bitrate);
});

Документация