Как загрузить несколько файлов Multipart с помощью симулированного клиента в архитектуре Microservice - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь загрузить несколько составных файлов с помощью симулированного клиента, но я не могу это сделать.

После нескольких исследований Загрузка файла с использованием Feign - multipart / form-data

Загрузка файла весеннего облака, клиент Feign

Массив Multipart [] загрузка файла с использованием Feign клиента

Клиентская сторона:

@FeignClient(name = "file-server", configuration = {FileUploadService.MultipartSupportConfig.class})
@RequestMapping
public interface FileUploadService {

    @RequestMapping(value = "/upload", method = RequestMethod.POST, consumes = MULTIPART_FORM_DATA_VALUE)
    public @ResponseBody
    List<FileUploadResponseDTO> handleFileUpload(@RequestPart(name = "file") MultipartFile[] file);
    @Configuration
    public class MultipartSupportConfig {

        @Autowired
        private ObjectFactory<HttpMessageConverters> messageConverters;

        @Bean
        @Primary
        @Scope("prototype")
        public Encoder feignEncoder() {
            return new SpringFormEncoder(new SpringEncoder(messageConverters));
        }
    }

Модуль, к которому я пытаюсь получить доступ:

@PostMapping(value = "/upload", consumes = MULTIPART_FORM_DATA_VALUE)
@ApiOperation(UPLOAD_FILE)
public List<FileUploadResponseDTO> uploadFiles(@RequestPart(name = "file") MultipartFile[] file){
    System.out.println("****hello ****");

    return fileUploadService.uploadFiles(file);
}

Вышеприведенное прекрасно работает для одного файла Multipart, но оно показывает следующую ошибку для нескольких файлов:

Servlet.service () для сервлета [dispatcherServlet] в контексте с исключением пути path [] [Обработка запроса не удалась;вложенное исключение - feign.codec.EncodeException: не удалось записать запрос: не найден подходящий HttpMessageConverter для типа запроса [[Lorg.springframework.web.multipart.MultipartFile;] и типа контента [multipart / form-data]] с основной причиной feign. codec.EncodeException: не удалось записать запрос: не найден подходящий HttpMessageConverter для типа запроса [[Lorg.springframework.web.multipart.MultipartFile;] и типа содержимого [multipart / form-data]

1 Ответ

0 голосов
/ 03 октября 2019

Вы должны установить кодировщик во время симуляции конфигурации:

public class FeignSimpleEncoderConfig {
    @Bean
    public Encoder encoder() {
        return new FormEncoder();
    }
}
...