I have a .NET Core API POST method below:
public IActionResult UploadFiles([FromForm(Name = "files")] List<IFormFile> files, [FromForm(Name = "providerName")] string providerName)
{
try
{
return WriteToXlsx(files,providerName); //documents
}
catch (Exception ex)
{
return BadRequest($"Error: {ex.Message}");
}
}
It works fine when posting from Postman, files are received. However when trying to post from ASP.NET MVC as shown below, it appears the files are not being received. there is no error message, but the file count from List files is zero. The string "providerName" is being received.
[HttpPost]
public async Task<ActionResult> ContentTransformation(IEnumerable<HttpPostedFileBase> files, string providerName)
{
try
{
HttpClientHandler clientHandler = new HttpClientHandler();
var httpClient = new HttpClient(clientHandler);
var multipartFormDataContent = new MultipartFormDataContent();
foreach (HttpPostedFileBase file in files)
{
byte[] fileData;
using (var reader = new BinaryReader(file.InputStream))
{
fileData = reader.ReadBytes(file.ContentLength);
}
var fileContent = new ByteArrayContent(fileData);
multipartFormDataContent.Add(fileContent, "files");
}
StringContent sProviderName = new StringContent(providerName);
multipartFormDataContent.Add(sProviderName, "\"providerName\"");
var response = await httpClient.PostAsync(ConfigurationManager.AppSettings["ContentTransformationAPI"], multipartFormDataContent);
FileContentResult metadataContent = new FileContentResult(response.Content.ReadAsByteArrayAsync().Result, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
return File(
fileContents: metadataContent.FileContents,
contentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
fileDownloadName: "metadata.xlsx"
);
}
catch (Exception ex)
{
ViewBag.Message = "File upload failed!! " + ex.Message;
ModelState.Clear();
return View();
}
}
files, to match yourfilesparameter in your controller's action, otherwise the model binder won't pick it up.IEnumerable<HttpPostedFileBase> filesinContentTransformationempty?