Проблема с процедурой повтора при загрузке одного фрагментированного файла - PullRequest
0 голосов
/ 19 июня 2019

Я реализую здесь автоматическое возобновление https://github.com/blueimp/jQuery-File-Upload/wiki/Chunked-file-uploads#automatic-resume, которое требует обработки метода fail.

В случае сбоя создается впечатление, что обработчик stop активирован строка 956 в jquery.fileupload.js в методе обработки always.Свойство _active уменьшается до 0, и хотя я обрабатываю метод fail, в течение промежутка времени между вызовом setTimeout и вызовом data.submit() в моем коде повтора,загрузка считается остановленной, а глобальный индикатор выполнения уменьшается до 0. Это приводит к тому, что индикатор выполнения становится «мерцающим».

Я пытался установить recalculateProgress на false, но, похоже, это непочини это.Это предотвращает уменьшение значения глобального индикатора выполнения ( строка 886 в jquery.fileupload.js), однако метод always вызывает обработчик stop в jquery.fileupload-ui.js строке 337 , который устанавливает прогресс элемента UI равным 0.

Редактировать: Существует исправление, которое решает эту проблему.Если вы манипулируете свойством _active во время метода повтора, вы можете обмануть метод всегда, чтобы думать, что неудачная загрузка все еще активна.Увеличение _active во время первоначального вызова с ошибкой, затем уменьшение _active (чтобы вернуть его к истинному активному счетчику) во время метода, выполняющего data.submit, исправит это. Это работает только для загрузки одного файла!

Например, при ошибке: _active = 1, увеличить его так, чтобы _active = 2.Сразу обработчик always сработает и уменьшит его обратно, поэтому _active = 1.Это предотвратит запуск метода стоп-метода методом Always.После выполнения метода тайм-аута обработчика повторных попыток снова уменьшите значение _active, уменьшив его до 0, а затем, как обычно, вызовите data.submit (), который увеличит значение _active обратно до 1.

Опять же, это решениеляп.Если кто-то может опубликовать исправление, не являющееся ключом, сделайте это.

...