我有一个远程服务A,它执行文件上传。我有一个服务B,它通过FeignClient调用服务A的上传接口来上传文件
服务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);
}我收到错误Content-类型"multipart/form-data“未为类型为StandardMultipartFile的请求正文设置
我已经尝试了https://github.com/spring-cloud/spring-cloud-netflix/issues/867和https://github.com/OpenFeign/feign-form上的大多数建议,但都不适用于我
发布于 2019-06-23 00:47:58
我能够通过简单地在RequestMapping中添加consumes = "multipart/form-data"来解决这个问题。原因是我将基于spring的注解与开放的feign注解混合在一起。@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);
}发布于 2021-10-18 08:57:03
如果你在测试中遇到问题,只要使用org.springframework.mock.web.MockMultipartFile就行了,你可以在构造器中将contentType设置为参数之一。
https://stackoverflow.com/questions/56711087
复制相似问题