我有一个执行文件上传的远程服务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,但对我无济于事
答案 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);
}