Java Spring: тип содержимого 'multipart / form-data; border; charset = UTF-8' не поддерживается - PullRequest
0 голосов
/ 26 марта 2020

Я создал контроллер:

@RequestMapping(value = "/photo/" , method = RequestMethod.POST)
public @ResponseBody
void addPhotoData(@RequestBody Photo photo, @RequestParam("data")
        MultipartFile photoData) {

    InputStream in = null;
    try {
        in = photoData.getInputStream();
        photoService.save(photo, in);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

и отправляю запрос почтальону: enter image description here enter image description here

Я не могу понять, почему я получаю ошибку 415 не поддерживается. Помощь!

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Это называется многокомпонентным смешанным типом. Попробуйте изменить свою подпись следующим образом

@RequestMapping(value = "/photo/" , method = RequestMethod.POST, consumes = {"multipart/mixed"})
public @ResponseBody void addPhotoData(@RequestPart Photo photo, @RequestPart("data")
        MultipartFile photoData) {
0 голосов
/ 27 марта 2020

Попробуйте обернуть тело запроса в объект.

 public class Payload {
   private String name;
   private String url;
   private MultipartFile data;
...
}

Добавить consumes = { "multipart/form-data" } и

@RequestMapping(value = "/photo/" , method = RequestMethod.POST, consumes = { "multipart/form-data" })
public @ResponseBody void addPhotoData(@ModelAttribute Payload payload) {
...

}

Существует также константа MediaType.MULTIPART_FORM_DATA_VALUE вместо использования этой строки

...