Невозможно загрузить файл из-за того, что Content-Type «multipart / form-data» не задан для тела запроса типа StandardMultipartFile - PullRequest
2 голосов
/ 22 июня 2019

У меня есть удаленный сервис A, который выполняет загрузку файлов.У меня есть служба B, которая вызывает API загрузки службы A через FeignClient для загрузки файла

Определение метода в службе A выглядит примерно так:

    ResponseEntity<?> upload(@RequestPart("file") MultipartFile file) { }

А метод в службе B -

    @FeignClient(url = "http://localhost:5000/")
    public interface uploadService {

    @RequestMapping(method = RequestMethod.POST, value = "/serviceA/upload")
    @Headers("Content-Type: multipart/form-data")
    void uploadFile(@RequestPart("file") MultipartFile file);
}

Я получаю сообщение об ошибке Тип содержимого "multipart / form-data" не задан для тела запроса типа StandardMultipartFile

Я попробовал большинство предложений на https://github.com/spring-cloud/spring-cloud-netflix/issues/867 и https://github.com/OpenFeign/feign-form но у меня ничего не работает

1 Ответ

0 голосов
/ 22 июня 2019

Мне удалось решить эту проблему, просто добавив consumes = "multipart/form-data" в RequestMapping.Причина была в том, что я смешивал весенние аннотации с открытыми симметричными аннотациями.@Headers("Content-Type: multipart/form-data") работает с Open feign.Здесь я использую spring-cloud-openfeign , который обеспечивает абстракцию для Open feign и упрощает интеграцию с компонентами Spring Framework.

    @FeignClient(url = "http://localhost:5000/")
    public interface uploadService {

    @RequestMapping(method = RequestMethod.POST, value = "/serviceA/upload" consumes = "multipart/form-data" )
     void uploadFile(@RequestPart("file") MultipartFile file);
    }
...