Spring Cloud Feign MultipartFile上传

时间:2018-01-04 16:07:43

标签: java spring multipartform-data spring-cloud-feign

我在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:假装形式:3.0.3” “io.github.openfeign.form:假装外形弹簧: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实例的其他字段的内容类型和文件名不会传递给服务器。

任何想法如何处理它?<​​/ p>

1 个答案:

答案 0 :(得分:1)

要从客户端微服务应用程序调用您的假装客户端界面,您可以使用类似的东西。

{{1}}

DiskFileItem类来自commons-fileupload库。希望它有所帮助。