Blueimp File Uploader - ограничения загрузки папки Chrome

Только Chrome 22 и более поздние версии поддерживают загрузку относительных имен папок при перетаскивании папок при загрузке браузера (html5).

Когда я пытаюсь загрузить несколько файлов с поддержкой папок Chrome drag & drop, я испытываю какое-то ограничение. И я не мог найти способ изменить или отключить это ограничение.

  • Когда вы просто выбираете 1000 файлов и переходите к загрузчику, он работает и добавляет эти файлы в список загрузки после некоторого ожидания обработки. Все в порядке.

  • Когда вы выбираете папку, содержащую 1000 файлов внутри, и переходите к загрузчику, загрузчик просто добавляет случайные 100 файлов в эту папку.

  • Когда вы создаете 110 папок, затем включаете по 1 файлу в каждую из папок, то загрузчик добавляет только 100 файлов, оставляя 10 папок.

Кажется, механизм загрузки файлов/папок Chrome каким-то образом ограничивает максимальное количество элементов в любой папке при рекурсивном сканировании файлов и папок. И номер ограничения 100.

Я не смог найти никакой связанной документации, и я отчаянно нуждаюсь в повышении этого ограничения до 1000 файлов/папок в каждом при минимуме или без ограничений.

Всем уже спасибо.


person wmwmwm    schedule 01.04.2015    source источник
comment
Привет @wmwmwm Можете ли вы рассказать нам, как вы обрабатываете загрузку папок в бэкэнде?   -  person Karthik Kamalakannan    schedule 22.04.2015
comment
Привет @karthik-k, мы не используем оригинальный обработчик для загрузки. Мы используем собственное программное обеспечение. Но вы можете использовать data.files[0].relativePath в разделе bind('fileuploadadd', function (e, data) { основного javascript загрузчика. Он также может публиковать это значение при загрузке. Если это не так, вы можете добавить легко из загрузчика javascript.   -  person wmwmwm    schedule 23.04.2015


Ответы (1)


После поиска соответствующей документации в течение 2 дней я смог найти ответ по следующему адресу.

https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries

И я мог бы исправить загрузчик blueimp.

в jquery.fileupload.js

Находить:

            } else if (entry.isDirectory) {
            dirReader = entry.createReader();
            dirReader.readEntries(function (entries) {
                that._handleFileTreeEntries(
                    entries,
                    path + entry.name + '/'
                ).done(function (files) {
                    dfd.resolve(files);
                }).fail(errorHandler);
            }, errorHandler);
        } else {

Заменять:

        } else if (entry.isDirectory) {
            dirReader = entry.createReader();

            var entries = [];

            var readEntries = function () {
                dirReader.readEntries(function (results /* entries */) {

                    if (results.length) {
                        entries = entries.concat(Array.prototype.slice.call(results || [], 0));
                        readEntries();
                    } else {
                        that._handleFileTreeEntries(
                            entries,
                            path + entry.name + '/'
                        ).done(function (files) {
                            dfd.resolve(files);
                        }).fail(errorHandler);
                    }

                }, errorHandler);
            };

            readEntries();

        } else {

Надеюсь, это поможет.

person wmwmwm    schedule 03.04.2015
comment
Кстати, эта ошибка, похоже, исправлена ​​в последних версиях загрузчика jquery. Если вы используете последнюю версию, то не обращайте внимания на этот пост. github.com/blueimp/jQuery-File-Upload/commit/ - person wmwmwm; 07.04.2015