FeignMultipartSupportConfig上传图片配置
在对应的boot项目上关闭全局的上传图片的配置
|
1 2 3 4 5 6 7 8 9 10 11 |
@SpringBootApplication @EnableCircuitBreaker @EnableEurekaClient @EnableFeignClients @ComponentScan (excludeFilters = { @ComponentScan .Filter(type = FilterType.ASSIGNABLE_TYPE,value = FeignMultipartSupportConfig. class )}) public class BootstrapApplication {
public static void main(String[] args) { SpringApplication.run(BootstrapApplication. class , args); } } |
在目标feign上面添加
|
1 2 3 4 5 6 |
@FeignClient (name = "micro-picture" , fallbackFactory = MicroPictureFactory. class , configuration = FeignMultipartSupportConfig. class ) public interface MicroPictureClient { @RequestMapping (value = { "/picture/common/upload/{commonKey}" }, method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public String upload( @RequestPart ( "image" ) MultipartFile image, @PathVariable ( "commonKey" ) Long commonKey);
} |
就可以实现对应的服务做图片的上传,针对的图片微服务就可以实现数据的额接收。
对应配置文件的代码
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@Configuration public class FeignMultipartSupportConfig { @Bean @Primary @Scope ( "prototype" ) public Encoder multipartFormEncoder() { return new FeignSpringFormEncoder(); } @Bean public feign.Logger.Level multipartLoggerLevel() { return feign.Logger.Level.FULL; } } |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
package com.zhht.config; import feign.RequestTemplate; import feign.codec.EncodeException; import feign.codec.Encoder; import feign.form.ContentType; import feign.form.FormEncoder; import feign.form.MultipartFormContentProcessor; import feign.form.spring.SpringManyMultipartFilesWriter; import feign.form.spring.SpringSingleMultipartFileWriter; import org.springframework.web.multipart.MultipartFile; import java.lang.reflect.Type; import java.util.Collections; import java.util.Map; public class FeignSpringFormEncoder extends FormEncoder {
public FeignSpringFormEncoder() { this ( new Default()); } public FeignSpringFormEncoder(Encoder delegate) { super (delegate); MultipartFormContentProcessor processor = (MultipartFormContentProcessor) this .getContentProcessor(ContentType.MULTIPART); processor.addWriter( new SpringSingleMultipartFileWriter()); processor.addWriter( new SpringManyMultipartFilesWriter()); } public void encode(Object object, Type bodyType, RequestTemplate template) throws EncodeException { if (bodyType.equals(MultipartFile. class )) { MultipartFile file = (MultipartFile) object; if (file != null ) { Map<String, Object> data = Collections.singletonMap( "image" , object); super .encode(data, MAP_STRING_WILDCARD, template); return ; } } else if (bodyType.equals(MultipartFile[]. class )) { MultipartFile[] file = (MultipartFile[]) object; if (file != null ) { Map<String, Object> data = Collections.singletonMap( "imgList" , object); super .encode(data, MAP_STRING_WILDCARD, template); return ; } } super .encode(object, bodyType, template); } } |
如何使用Feign上传图片
添加依赖,支持SpringEncoder
|
1 2 3 4 5 6 7 8 9 10 |
< dependency > < groupId >io.github.openfeign.form</ groupId > < artifactId >feign-form</ artifactId > < version >3.4.1</ version > </ dependency > < dependency > < groupId >io.github.openfeign.form</ groupId > < artifactId >feign-form-spring</ artifactId > < version >3.4.1</ version > </ dependency > |
将SpringFormEncoder的默认处理
encoder配置为SpringEncoder
|
1 2 3 4 5 6 7 |
@Configuration public class FeignMultipartSupportConfig { @Bean public Encoder multipartFormEncoder(ObjectFactory<HttpMessageConverters> messageConverters) { return new SpringFormEncoder( new SpringEncoder(messageConverters)); } } |
编写client
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@FeignClient (value = "****" , fallbackFactory = UploadClientFallbackFactory. class , configuration = FeignMultipartSupportConfig. class ) public interface UploadClient { /** * 上传图片文件 * * @param file * @return */ @PostMapping (value = "/tbk/feedback/upload" , produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) BaseResponse<String> uploadImage( @RequestPart ( "file" ) MultipartFile file); } |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
原文链接:https://blog.csdn.net/achen0001/article/details/85252141
查看更多关于FeignMultipartSupportConfig上传图片配置方式的详细内容...