Hi, I had the same problem and it helped me:
My setup is netCore MVC netCoreApi.
My MVC controller looks like this:
[HttpPost("UploadFiles")] public async Task<IActionResult> Post(List<IFormFile> files) { Sp4RestClient dataPovider = new Sp4RestClient("http://localhost:60077/"); long size = files.Sum(f => f.Length); foreach (var file in files) { await dataPovider.ImportFile(file); } return Ok(); }
DataProvider Method:
public async Task ImportFile(IFormFile file) { RestClient restClient = new RestClient(_queryBulder.BuildImportFileRequest()); using (var content = new MultipartFormDataContent()) { content.Add(new StreamContent(file.OpenReadStream()) { Headers = { ContentLength = file.Length, ContentType = new MediaTypeHeaderValue(file.ContentType) } }, "File", "FileImport"); var response = await restClient.Post<IFormFile>(content); } }
And least my WebApi controller:
[HttpPost] [Route("ImportData")] public IActionResult Import(IFormFile file) { return Ok(); }
To see the full code here, my PostClient Post method:
public async Task<RestResult<T>> Post<T>(HttpContent content) { using (HttpClient httpClient = new HttpClient()) { HttpResponseMessage response = await httpClient.PostAsync(Endpoint, content); if (response.StatusCode == HttpStatusCode.Created) { T result = JsonConvert.DeserializeObject<T>(await response.Content.ReadAsStringAsync()); return new RestResult<T> { Result = result, ResultCode = HttpStatusCode.OK }; } RestResult<T> nonOkResult = new RestResult<T> { Result = default(T), ResultCode = response.StatusCode, Message = await response.Content.ReadAsStringAsync() }; return nonOkResult; } }
// Yes, I know that I do not get HttpStatusCode.Created back;)
happy coding;)
source share