I'm trying to upload image to spring boot server.
But i get error
Required request parameter 'info' for method parameter type MemberInfoDto is not present
When i removed info, 'image' is not present error is occured.
What is wrong with my code?
Below is RN code
export async function postMultipartData(url, data, file) {
let _headers = await headers()
_headers = Object.assign(_headers, {
'Content-Type': 'multipart/form-data;boundary=gc0p4Jq0M2Yt08jU534c0p',
})
let formData = new FormData()
formData.append(
"info",
JSON.stringify(data)
);
if (file) {
if (Array.isArray(file)) {
for (let i = 0; i < file.length; i++) {
const v = file[i];
const fileNames = v.filename.split('.');
const ext = fileNames[fileNames.length - 1];
formData.append('images', {
name: v.filename,
type: `image/${ext}`,
uri: v.uri,
});
}
} else {
const filePath = file.split('.');
const ext = filePath[filePath.length - 1];
formData.append('image', {
name: `image.${ext}`,
type: `image/${ext}`,
uri: file,
}
);
}
}
return axiosInstance.post(`${url}`, formData, {
headers: _headers
}).then(res => {
return res.data
}).catch(error => {
return error
})
}
data param looks like
{
gender: gender, // string
birthDate: birthday, // date
languages: language, // array
}
And Spring Controller Code
@PostMapping(value = "/saveAdditionalInfo")
public void saveAdditionalInfo(@RequestParam(value = "info") MemberInfoDto MemberInfoDto, @RequestParam(value = "image") MultipartFile image) throws IOException {
~~~
}
MemberInfoDto is
@Data
@RequiredArgsConstructor
public class MemberInfoDto {
private String gender;
private LocalDate birthDate;
private String[] languages;
}
And RN Form Data post
{
"_parts": [
[
"info",
{
"gender": "female",
"birthday": "1997-12-31T15:00:00.000Z",
"languages": [
"english",
"spanish"
]
}
],
[
"image",
{
"name": "image.jpg",
"type": "image/jpg",
"uri": "file:///Users/tom/Library/Developer/CoreSimulator/Devices/B5075DC8-EB94-442D-8385-0ED076E823FE/data/Containers/Data/Application/9B66D793-0BBA-4555-AAA8-08F3D2061FD2/tmp/A89EF802-6289-4011-A958-23FD9E73FAA7.jpg"
}
]
]
}