public async Task <IActionResult> Post() { if (!IsMultipartContentType(Request.ContentType)) { return(BadRequest($"Expected a multipart request, but got {Request.ContentType}")); } var boundary = GetBoundary(MediaTypeHeaderValue.Parse(Request.ContentType)); var reader = new MultipartReader(boundary, HttpContext.Request.Body); var section = await reader.ReadNextSectionAsync(); if (section == null) { return(BadRequest($"Expecting 1 multipart section.")); } if (!ContentDispositionHeaderValue.TryParse(section.ContentDisposition, out var contentDisposition)) { return(BadRequest($"ContentDisposition has a wrong value '{section.ContentDisposition}'")); } if (StringSegment.IsNullOrEmpty(contentDisposition.FileName)) { return(BadRequest($"Filename is missing")); } await _streamManager.ProcessStream(section.Body); return(Ok("File saved")); }