Feign 传输 MultipartFile 的一些问题
File 转 MultipartFile
pom.xml
<!-- https://mvnrepository.com/artifact/org.springframework/spring-mock --><dependency><groupId>org.springframework</groupId><artifactId>spring-mock</artifactId><version>2.0.8</version></dependency>
publicstatic MultipartFilegetMultipartFile(String fileName, File file)throws IOException{returnnewMockMultipartFile(fileName, file.getName(), ContentType.APPLICATION_OCTET_STREAM.toString(),newFileInputStream(file));}
报错 Current request is not a multipart request、Content type ‘’ not supported
- @PostMapping设置 consumes = MediaType.MULTIPART_FORM_DATA_VALUE
- 使用@RequestPart(),不能使用@RequestParam()
@PostMapping(value="/upload", consumes= MediaType.MULTIPART_FORM_DATA_VALUE)
ResultBodyupload(@RequestPart(value="file") MultipartFile file);
报错 Required request part ‘file’ is not present
configuration
@ConfigurationpublicclassUploadFeignConfig{@Beanpublic EncodermultipartFormEncoder(){returnnewSpringFormEncoder(newSpringEncoder(newObjectFactory<HttpMessageConverters>(){@Overridepublic HttpMessageConvertersgetObject()throws BeansException{returnnewHttpMessageConverters(newRestTemplate().getMessageConverters());}}));}}
FeignClient
@FeignClient(value= FileConstants.FILE_SERVER, configuration= UploadFeignConfig.class)publicinterfaceFileServiceClientextendsIFileServiceClient{@Override@PostMapping(value="/upload", consumes= MediaType.MULTIPART_FORM_DATA_VALUE)
ResultBodyupload(@RequestPart(value="file") MultipartFile file);}