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
这是