Как адекватно реализовать передачу больших файлов на сервер ASP.NET и с него на клиент?

ASP.NET 8 web-api с MVC (без View, фронт отдельно будет (браузер, десктоп)). Нужен адекватный способ, чтоб большой файл загружать на сервер и скачивать с сервера, при этом он не должен весь находиться в ОЗУ (получить часть файла, записать на диск или в контейнер minio, удалить из ОЗУ). Должно быть удобно для меня и фронта, и желательно велосипеды не писать. И должна быть уверенность, что если отправлять много файлов на сервер параллельно, то часть отправок будет отклонена (не будет сохранять в ОЗУ тела запросов), если для них не хватит ОЗУ, и сервер не отвалится.

Пока в мыслях такое, но сомневаюсь в адекватности этого:

[HttpPost]
public long UploadFileRequest([FromBody]FileInfo fileInfo/*информация о файле. название, размер, тип контента в нем, ...*/)
{
    return 0; //id загружаемого файла
}
        
[HttpPost]
public void UploadFilePart([FromForm] long id /*id файла*/, long partId /*может пригодиться, чтоб не перепутать части в случае проблем*/, [FromForm]Stream partStream /*Тут будут байты части файла*/)
{
   //сохранить байты из того потока на диск
}
    
//уведомить сервер, что весь файл передан.
[HttpGet]
public void UploadFinish([FromQuery]long id){}

И еще на сокетах что-то подобное.


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