'415 unsupported media type error while trying to upload file from react to web api
I am new to react and web api and I am getting this unsupported media type error while trying to upload my file into my web api function
Here is my react js code:
onFileUpload = () => {
// Create an object of formData
const formData = new FormData();
console.log("FormData");
// Update the formData object
formData.append('myFile', this.state.selectedFile, this.state.selectedFile.name);
console.log(this.state.selectedFile);
// Request made to the backend api
// Send formData object
//axios.post("api/uploadfile", formData);
axiosAPI.post('api/observation/Uploadfile', formData).then(response => {});
};
The corresponding web api code is this:
[HttpPost]
[Route("Uploadfile")]
public IHttpActionResult Uploadfile(object formData)
{
try
{
return Ok(formData);
}
catch (Exception ex)
{
return Content(HttpStatusCode.NoContent, "Something went wrong");
}
}
I am trying to upload the file and get it to my backend however I am getting this error. What does this error mean and how do I resolve this?
Solution 1:[1]
Whenever you are uploading a file, make sure to add appropriate headers to the request.
axiosAPI.post('api/observation/Uploadfile', formData, {
headers: {
'Content-Type': 'multipart/form-data' // <- HERE
}
}).then(response => {});
Solution 2:[2]
Sometime the issue is on formData, you need to append file obj on formData then send to api.
const formData = new FormData();
var file = fileList[0].originFileObj;
formData.append("excelFormFile", file); //Append file obj to formData
//excelFormFile name similar to .NET Core Api Like c# Code : ' public async Task PostProductImport(IFormFile excelFormFile) '
Solution 3:[3]
I had the same issue, I'm using .NET 6 for the API and React with Axios for the frontend.
To be able to get the file in the controller, I had to use the "FromForm" attribute, otherwise, I was getting the 415 error when I tried to do the Post Request.
[HttpPost]
public async Task<IActionResult> Create([FromForm] ExampleDto dto)
{
/// ...
}
To send the data from the React Application using Axios, I just created the FormData object just like you did, and made a post request without any special headers o configuration.
Hope this can help you solve your issue.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Eduard |
Solution 2 | Salis Khizar Khan |
Solution 3 | cesarmart |