Я могу ошибаться, но я полагаю, что Spring пытается автоматически сопоставить весь объект «Пользователь», который передается в вашу конечную точку и не работает, потому что либо нет поля «фото» во входящем пользовательском объекте, или он не может автоматически преобразовать это поле в байт [].
Ради тестирования, если это так или нет, вы можете сделать одно из следующих
1) Если входящий пользовательский объект не имеет поля фотографии, удалите его из пользовательского объекта
2) Если это так, и он входит как MultipartFile, тогда измените с byte [] на multipartfile.
Я знаю, что ни один из них не поможет вам поместить его в базу данных, но это поможет выяснить, действительно ли это ваша проблема. Тогда я был бы рад помочь в дальнейшем.
EDIT
Хорошо, я усердно трудился, чтобы заставить это работать, и, наконец, я понял! Смотрите мои изменения ниже.
Измените конечную точку контроллера следующим образом
@PostMapping
@ResponseBody
public void postUser(@ModelAttribute User user, @RequestParam("file") MultipartFile file) throws IOException {
user.setPhotoByteArray(file.getBytes());
//Do Service Call here(user)
}
Я обновил объект User следующим образом.
@Entity(name = "users")
public class User {
@Id
@GeneratedValue
private long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email")
private String email;
@Column(name = "photo")
private byte[] photoByteArray;
public User(long id, String firstName, String lastName, String email) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
И это все! Я проверил эту работу, отправив запрос данных формы через почтальона со всеми необходимыми полями, я также добавил следующие строки, чтобы сохранить файл в локальном каталоге, чтобы я мог открыть его, чтобы убедиться, что он правильно обработал переданное мной изображение в почтальон
FileUtils.writeByteArrayToFile(new File("test.png"), user.getPhotoByteArray());
Я также добавил конструктор к вашей сущности таким образом, когда он создавал объект из атрибута модели, он позволял бы ему начинать с нуля, и я мог бы установить его позже.
Дайте мне знать, если у вас по-прежнему будут проблемы или вопросы.