Как насчет использования iframe, который обрабатывает форму загрузки?Таким образом, браузер не будет обновлять (посредством вызовов AJAX) содержимое страницы, которую «мы уже покидаем».Iframe может быть стилизован так, чтобы он был неотличим от другого контента.
AJAX-вызовы некоторого метода, который следит за некоторой переменной прогресса (скажем, double, который указывает процент), совершенно допустимы.Ниже представлен псевдо-пример barebones.
!PSEUDO!
double progress = 0.0d
void upload(request, response) {
// updates progress real-time
}
void ajaxProgress(request, response) {
// set progress to response
}