我在Spring Cloud上有客户端角色微服务和服务器角色微服务。我在客户端微服务上有一个FeignClient bean,它有一个接受MultipartFile的方法,如下所示:
@RequestMapping(value = {"/files"}, consumes = {"multipart/form-data"}, method = {RequestMethod.POST}
)
ResponseEntity uploadFile(@RequestBody MultipartFile file, @RequestParam("someParam") String someParam)
通过使用以下两个库: "io.github.openfeign.form:feign-form:3.0.3" "io.github.openfeign.form:feign-form-spring:3.0.3"
可以像这样配置feign以进行文件上传:
@Configuration
public class FeignConfiguration {
@Autowired
private ObjectFactory<HttpMessageConverters> messageConverters;
@Bean
public Encoder feignFormEncoder() {
return new SpringFormEncoder(new SpringEncoder(messageConverters));
}
}
然后在Feign客户端中以如下方式引用配置:
@FeignClient(name = "destination-microservice-id", configuration = FeignConfiguration.class)
如何实现MultipartFile接口以及如何创建实例以处理来自客户微服务的调用? 在使用Spring的MockMultipartFile实现进行测试时,它们几乎都能正常工作。文件被传输,“someParam”值也被传输。但是,作为MultipartFile实例的其他字段——内容类型和文件名并未传递到服务器。
有什么好的解决方法吗?