public async Task <IActionResult> Post( [FromRoute] [SwaggerParameter("Идентификатор ответа")] Guid answerId, [FromForm] [SwaggerParameter("Список файлов")] IEnumerable <IFormFile> files) { // проверки существования answerId // также должна быть какая-то проверка, чтобы не добавляли файлы в чужие answerId, наверно какая-то авторизация // .... // Проверяем что нам передали файлы if (files == null) { return(StatusCode(400, new ErrorModel { Message = "No Files Found" })); } if (files.Count() == 0) { return(StatusCode(400, new ErrorModel { Message = "No Files Found" })); } try { // Получаем контейнер AzureBlobs BlobContainerClient containerClient = BlobClient.GetBlobContainerClient(BlobParameters.AzureBlobContainerName); // проходим по файлам foreach (IFormFile file in files) { // Создаем класс для хранения данных о файле AnswerAttachments aa = new AnswerAttachments { Id = Guid.NewGuid(), AnswerId = answerId, Created = DateTime.Now, FileName = file.FileName, MimeType = file.ContentType, Size = Convert.ToInt32(file.Length) }; // Получаем клиента для нашего файла BlobClient blobClient = containerClient.GetBlobClient(aa.Id.ToString("N")); // загружаем данные в хранилище AzureBlobs using (Stream st = file.OpenReadStream()) await blobClient.UploadAsync(st, true); // Добавляем объект в контекст DB.AnswerAttachments.Add(aa); } // сохраняем изменения в базе await DB.SaveChangesAsync(); return(Ok("{}")); } catch { // Сообщам об ошибке return(StatusCode(500, new ErrorModel { Message = "General Error Occured" })); // здесь бы добавить протоколирование ошибок } }