Собрать файл из частей воедино и вернуть его на клиент
У меня есть следующая задача
Есть файл, разбитый на части, каждая из которых загружена на сторонний сервер. Каждая часть файла может быть загружена в отдельный объект типа Stream. Задача состоит в том, чтобы каким-то образом собирать файл по кусочкам и возвращать его, на клиент, чтобы человек смог его скачать себе на устройство. При этом необходимо, чтобы не было ожидания, пока файл на сервере соберется по кусочкам и после этого отправится на клиент, поскольку:
- Это может занять много времени, поскольку файл целиком может занимать неограниченный объем памяти;
- Это может тратить много оперативной памяти также из-за возможного большого веса файла.
Мне представляется решение этой задачи примерно таким образом:
- Создается поток, куда будут последовательно записываться байты частей файла;
- Этот поток передается на клиент и начинается загрузка;
- По мере того, как на сервере скачиваются части файла, они записываются в поток (как только часть файла записалась в поток, клиент может ее скачать);
- Передача файла на клиент завершается и человек имеет у себя полностью загруженный файл.
Либо каким-то образом объединить несколько Stream, которые приходят с частями файла, в один
С самой сборкой файла по кусочкам проблем нет, проблема именно с последовательной записью данных в поток, откуда скачивает данные клиент. Подскажите, возможно ли в принципе решить такую задачу, и если возможно, то каким образом? Заранее спасибо.