вам нужно будет сделать 2 разных вызова (2-й будет асинхронным).Ваш сервер будет реализовывать шаблон наблюдателя для обновления данных, которые передаются объекту, который его наблюдает.Сервер будет записывать эти 50 МБ данные порциями, а не потоком.
Класс наблюдателя будет другим классом, который вы будете вызывать асинхронно.Наблюдатель сохранит в своем составе, какое количество данных было передано.
Это та же самая концепция, которую Gmail реализовывал до выпуска HTML5 в строке прогресса загрузки вложений.Что они сделали, так это то, что с помощью html control они загрузили вложение, которое было написано на стороне сервера, и в то же время они использовали объекты flash для отправки вызова на этот сервер, чтобы узнать, сколько данных было сохранено.