I have an API endpoint that can processes image. And the API endpoint works fine I checked it properly. But when I try to upload a image file with my Reactjs front-end it doesn't works and gives me a HTTP 422
error code.
I am using axios to post the image. This is my Reactjs upload method. (I am quite to ReactJs.)
onClickHandler = () => {
const data = new FormData()
var host = window.location.protocol "//" window.location.host "/api/image"
data.append('file', this.state.selectedFile)
axios.post(host, data, {
//headers: {
// 'Content-Type': 'multipart/form-data'
//},
// This just for the progress bar
onUploadProgress: ProgressEvent => {
this.setState({
loaded: (ProgressEvent.loaded / ProgressEvent.total*100),
})
},
})
.then(res => { // then print response status
toast.success('upload success')
})
.catch(err => { // then print response status
toast.error('upload fail')
})
}
This the request header from the Swagger UI.
This the request header from my Reactjs App.
CodePudding user response:
According to the body of the 422 error message FastAPI is expecting a field named image
to be submitted. In your frontend code you're using the field name file
. These two need to match, so either change your frontend code to use the name image
or your backend to expect the name file
instead.