Я реализую здесь автоматическое возобновление 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.
Опять же, это решениеляп.Если кто-то может опубликовать исправление, не являющееся ключом, сделайте это.