Я отправляю файл в api следующим образом
const formData = new FormData();
if ($.isEmptyObject(this.state.attachment)===false) {
formData.append('attachment', this.state.attachment);
$.ajax({
type: 'POST',
url: process.env.REACT_APP_API_HOST + "/api/attachment",
async: false,
timeout: 5000,
processData: false,
contentType: false,
cache: false,
data: {
attachment: formData
}
});
}
И привязанность я получаю следующим образом
<input type='file' name='attachment' className = "form-control" defaultValue = {this.state.attachment}
onChange = {this.handleChangeEvent}/>
И мой контроллер
@RequestMapping(value = "/attachment", method = RequestMethod.POST)
public HttpEntity attachment(@ModelAttribute MultipartFile attachment){
System.out.println(attachment);
return ResponseEntity.ok().build();
}
Я получаю нулевой результат Что я делаю не так?
Обновлять
handleChangeEvent = (event) => {
this.setState({[event.target.name]: event.target.value});
};
Отправьте объект FormData напрямую: data: formData. Не оборачивайте его в объект, который нужно сериализовать.
Создайте объект-оболочку с полем attachment типа MultipartFile. Затем используйте @ResponseBody в качестве аннотации к этому объекту в качестве аргумента метода.
Комментарий М. Дейнума не получился. И я запутался, но обновил сообщение для корня комментария

Пожалуйста, опубликуйте свою функцию handleChangeEvent (), чтобы я мог заглянуть внутрь того, что на самом деле происходит внутри this.state.attachment.