Рассматривали ли вы использование JavaScript API для загрузки?Они намного более точны и позволяют сообщать о ходе выполнения без обратного вызова сервера.
https://developer.mozilla.org/en/using_xmlhttprequest#Monitoring_progress
Следует отметить, что в этом случае загрузка происходит через AJAX, что может или можетне быть полезнымЗагрузка на основе AJAX может быть отменена, перезапущена или иным образом взаимодействовать с использованием только JS.
Недостатком является то, что сложнее объединять данные.Некоторые пользовательские агенты по-прежнему имеют проблемы с двоичными строками, поэтому может потребоваться преобразовать данные в базу 64 перед их загрузкой.Кроме того, следует предположить, что не все пользовательские агенты поддерживают эту функцию.
Надеюсь, это каким-то образом поможет.