由于未为StandardMultipartFile类型的请求主体设置Content-Type“ multipart / form-data”,因此无法上传文件

时间:2019-06-21 22:28:27

标签: spring-boot spring-cloud-feign

我有一个执行文件上传的远程服务A。我有服务B,它通过FeignClient调用服务A的上传API来上传文件

服务A中的方法定义类似于

    ResponseEntity<?> upload(@RequestPart("file") MultipartFile file) { }

服务B中的方法是

    @FeignClient(url = "http://localhost:5000/")
    public interface uploadService {

    @RequestMapping(method = RequestMethod.POST, value = "/serviceA/upload")
    @Headers("Content-Type: multipart/form-data")
    void uploadFile(@RequestPart("file") MultipartFile file);
}

我遇到了错误 未为StandardMultipartFile类型的请求主体设置Content-Type“ multipart / form-data”

我尝试了关于https://github.com/spring-cloud/spring-cloud-netflix/issues/867的大多数建议, https://github.com/OpenFeign/feign-form,但对我无济于事

1 个答案:

答案 0 :(得分:0)

我能够通过在RequestMapping中添加consumes = "multipart/form-data"来解决此问题。原因是我将基于Spring的注释与开放的伪注释混合在一起。 @Headers("Content-Type: multipart/form-data")Open feign一起使用。在这里,我使用spring-cloud-openfeign来提供Open feign的抽象,并使其易于与Spring框架组件集成。

    @FeignClient(url = "http://localhost:5000/")
    public interface uploadService {

    @RequestMapping(method = RequestMethod.POST, value = "/serviceA/upload" consumes = "multipart/form-data" )
     void uploadFile(@RequestPart("file") MultipartFile file);
    }