1. Home Controller: public class HomeController : Controller { private readonly ILogger _logger; private readonly IServiceRepository _servicerepo; private readonly IHttpClientFactory _httpclient; public HomeController(ILogger logger, IServiceRepository serviceRepository, IHttpClientFactory httpClientFactory) { _logger = logger; _servicerepo = serviceRepository; _httpclient = httpClientFactory; } [HttpPost] public async Task AddFileItemAsync(FileItem _fileItem2, IFormFile _file) { var httpClient = _httpclient.CreateClient("httpclient"); using (var multipartFormContent = new MultipartFormDataContent()) { multipartFormContent.Add(new StringContent(_fileItem2.ID.ToString()), "ID"); multipartFormContent.Add(new StringContent(_fileItem2.Name), "Name"); // Add the file var fileStreamContent = new StreamContent(_file.OpenReadStream()); fileStreamContent.Headers.ContentType = MediaTypeHeaderValue.Parse(_file.ContentType); multipartFormContent.Add(fileStreamContent, name: "file", _file.FileName); //// Method 1 : this method returns Unsupported media type, but if file is removed then it works fine. //var response = await httpClient.PostAsync("/api/todo/SaveFileWithData", multipartFormContent); // Method 2 : this method also returns Unsupported media type, but if file is removed then it works fine. var request = new HttpRequestMessage(HttpMethod.Post, "/api/todo/SaveFileWithData"); request.Content = multipartFormContent; var responsemsg = await httpClient.SendAsync(request); responsemsg.EnsureSuccessStatusCode(); var response = await responsemsg.Content.ReadAsStringAsync(); return response; } } 2. AddFileItem view page: @model MVCWebApplication.Models.FileItem @{ ViewData["Title"] = "AddFileItem"; }

AddFileItem

FileItem


3. API Controller: [Route("api/[controller]")] [ApiController] public class TodoController : ControllerBase { [HttpPost()] [Route("SaveFileWithData")] public async Task SaveFileWithData([FromForm]FileItem? fileItem, [FromForm]IFormFile? file) { int i = 2; return "fileSavedSuccessfully"; } } 4. Program.cs file: Configure the httpClient. builder.Services.AddHttpClient("httpclient", http => { http.BaseAddress = new Uri("https://localhost:44374/"); });