In my ASP.NET MVC project, I am trying to post image from Controller action method to API controller method. Plan is to leverage this API to other clients to use to upload images.
I am able to successfully hit the API Post method from Controller Action method, but am not able to pass the image object.
Here is my HomeController.cs Upload Action Method
[HttpPost]
public async Task<ActionResult> Upload(FormCollection formCollection)
{
    var baseUri = "http://localhost/api/Process";
    HttpPostedFileBase file = Request?.Files[0];
    if (file == null || (file.ContentLength <= 0) || string.IsNullOrEmpty(file.FileName))
        return new EmptyResult();
    string fileName = file.FileName;
    byte[] fileBytes = new byte[file.ContentLength];
    HttpContent stringContent = new StringContent(fileName);
    HttpContent fileStreamContent = new StreamContent(file.InputStream);
    HttpContent bytesContent = new ByteArrayContent(fileBytes);
    using (var formDataContent = new MultipartFormDataContent())
    {
        formDataContent.Add(stringContent, "fileName", fileName);
        formDataContent.Add(fileStreamContent, "inputStream", fileName);
        formDataContent.Add(bytesContent, "fileBytes", fileName);
        using (var httpClient = new HttpClient())
        {
            formDataContent.Headers.ContentType =
                MediaTypeHeaderValue.Parse("application/x-www-form-urlencoded");
            var response = await httpClient.PostAsync(baseUri, formDataContent);
            var content = await response.Content.ReadAsStringAsync();
           //Handle the response
        }
    }
    return View("Result");
}
In my Process controller which is inheriting from ApiController, I have the following Post method
[HttpPost]
public async Task<string> Post([FromBody]MultipartFormDataContent formDataContent)
{
    Task<string> imageContent = Request.Content.ReadAsStringAsync();
    string body = imageContent.Result;
    ImageResponse imageResponse = null;
    //.................
    //.................
    return someValue
}
Here parameter formDataContent is always null and Request.Content.ReadAsStringAsync() is empty
 
     
    