【发布时间】:2018-06-14 09:53:21
【问题描述】:
我在 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 实例的其他字段的内容类型和文件名不会传递给服务器。
任何想法如何处理它?
【问题讨论】:
-
除了 MockMultipartFile 之外的另一个实现是 spring 中的 CommonsMultipartFile 类
-
我见过这个实现,但它看起来像是为服务器端处理创建的东西
标签: java spring multipartform-data spring-cloud-feign