Java 如何在微服务架构中使用外设客户端上传多个多部分文件

Java 如何在微服务架构中使用外设客户端上传多个多部分文件,java,microservices,multipart,spring-cloud-feign,Java,Microservices,Multipart,Spring Cloud Feign,我正在尝试使用外挂客户端上载多个多部分文件,但我无法这样做 经过几次研究,, 客户端: @FeignClient(name = "file-server", configuration = {FileUploadService.MultipartSupportConfig.class}) @RequestMapping public interface FileUploadService { @RequestMapping(value = "/upload", method =

我正在尝试使用外挂客户端上载多个多部分文件,但我无法这样做

经过几次研究,,

客户端:

@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));
        }
    }
@FeignClient(name=“file server”,配置={FileUploadService.MultipartSupportConfig.class})
@请求映射
公共接口文件上载服务{
@RequestMapping(value=“/upload”,method=RequestMethod.POST,consumes=MULTIPART\u FORM\u DATA\u value)
公共@ResponseBody
列表handleFileUpload(@RequestPart(name=“file”)MultipartFile[]file);
@配置
公共类MultipartSupportConfig{
@自动连线
私有对象转换器;
@豆子
@初级的
@范围(“原型”)
公共编码器伪码(){
返回新的SpringFormEncoder(新的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);
}
@PostMapping(value=“/upload”,consumes=MULTIPART\u FORM\u DATA\u value)
@API操作(上传文件)
公共列表上载文件(@RequestPart(name=“file”)MultipartFile[]file){
System.out.println(“****你好****”);
返回fileUploadService.uploadFiles(文件);
}
上述方法适用于单个多部分文件,但对多个文件显示以下错误:

路径为[]的上下文中Servlet[dispatcherServlet]的Servlet.service()引发异常[Request processing failed;嵌套异常为feign.codec.EncodeException:无法写入请求:找不到适用于请求类型[[Lorg.springframework.web.multipart.multipart.MultipartFile;]和内容类型[multipart/form data]的HttpMessageConverter]根本原因
feign.codec.EncodeException:无法写入请求:找不到适用于请求类型[[Lorg.springframework.web.multipart.MultipartFile;]和内容类型[multipart/form data]的HttpMessageConverter

在外部配置期间,您应该设置编码器:

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

仍然存在同样的问题:无法编写请求:没有为请求类型[[Lorg.springframework.web.multipart.MultipartFile;]和内容类型[multipart/form data]”找到合适的HttpMessageConverter,我认为您遗漏了一些要点!让我们验证如下:
@Configuration public class FaignSimpleEncoderConfig{@Bean public Encoder(){return new FormEncoder();}}
然后在外部接口中使用它:
@FeignClient(name=“file server”,configuration=FeignSimpleEncoderConfig.class)@RequestMapping公共接口FileUploadService{…}
得到了NullPointerException。你确定上面的代码有效吗?我们需要依赖项吗?我只使用了这个:
org.springframework.cloud-spring-cloud-starter-openfeign
这是