Не похоже, что вы используете Rails, но я думаю, что самый простой способ сделать это с клиента.
В настройках браузера вы можете сделать это либо с помощью Flash (SWFUpload), либо предоставить индикатор выполнения только для новых браузеров, используя новые вещи XMLHttpRequest (загрузка все еще работает в старых браузерах ... просто без индикатора выполнения). *
Это работает немного иначе, чем вы описываете, но разница очень мала. Вы говорите о том, чтобы спросить сервер, сколько данных он действительно сохранил. Эти методы только сообщают, сколько данных было отправлено на сервер.