У меня есть такой контроллер, и я хочу отправить форму с загрузкой файла, а также некоторые данные формы, такие как метка, как показано ниже. Кроме того, я хочу сделать это с помощью @RequestBody, чтобы я мог использовать аннотацию @Valid для оболочки, так как будет добавлено больше переменных.
public @ResponseBody WebResponse<Boolean> updateEUSettings(
final Locale locale,
@Validated @ModelAttribute final EUPSettingsWrapper endUserPortalSettingsWrapper) {
}
И моя обертка это:
public class EUPSettingsWrapper {
private String label;
private MultipartFile logo;
// getter , setters..etc...
}
Но я хотел бы преобразовать его в @RequestBody из ModelAttributes.
Я пытаюсь разделить загрузку файла как параметр запроса, например так:
public @ResponseBody WebResponse<Boolean> updateEUSettings(
final Locale locale,
@Validated @RequestBody final EUPSettingsWrapper endUserPortalSettingsWrapper,
@RequestParam(value = "file1", required = true) final MultipartFile logo) {
endUserPortalSettingsWrapper.setLogo(logo);
// ...
}
В моем макете MVC я устанавливаю:
getMockMvc().perform(fileUpload(uri).file(logo)
.accept(MediaType.APPLICATION_JSON)
.content(JSONUtils.toJSON(wrapper))
.contentType(MediaType.MULTIPART_FORM_DATA))
.andExpect(status().isOk());
Но я получаю такую ошибку, которая говорит:
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data' not supported
У кого-нибудь есть хорошее представление о том, как многокомпонентные загрузки файлов можно использовать с @RequestBody? Что-то я не так делаю выше?