Собрать файл из частей воедино и вернуть его на клиент

У меня есть следующая задача

Есть файл, разбитый на части, каждая из которых загружена на сторонний сервер. Каждая часть файла может быть загружена в отдельный объект типа Stream. Задача состоит в том, чтобы каким-то образом собирать файл по кусочкам и возвращать его, на клиент, чтобы человек смог его скачать себе на устройство. При этом необходимо, чтобы не было ожидания, пока файл на сервере соберется по кусочкам и после этого отправится на клиент, поскольку:

  • Это может занять много времени, поскольку файл целиком может занимать неограниченный объем памяти;
  • Это может тратить много оперативной памяти также из-за возможного большого веса файла.

Мне представляется решение этой задачи примерно таким образом:

  • Создается поток, куда будут последовательно записываться байты частей файла;
  • Этот поток передается на клиент и начинается загрузка;
  • По мере того, как на сервере скачиваются части файла, они записываются в поток (как только часть файла записалась в поток, клиент может ее скачать);
  • Передача файла на клиент завершается и человек имеет у себя полностью загруженный файл.

Либо каким-то образом объединить несколько Stream, которые приходят с частями файла, в один

С самой сборкой файла по кусочкам проблем нет, проблема именно с последовательной записью данных в поток, откуда скачивает данные клиент. Подскажите, возможно ли в принципе решить такую задачу, и если возможно, то каким образом? Заранее спасибо.


Ответы (0 шт):