FeignMultipartSupportConfig上传图片配置方式

网友投稿 444 2022-08-23


FeignMultipartSupportConfig上传图片配置方式

目录FeignMultipartSupportConfig上传图片配置在对应的boot项目上关闭全局的上传图片的配置在目标feign上面添加对应配置文件的代码如何使用Feign上传图片添加依赖,支持SpringEncoder将SpringFormEncoder的默认处理编写client

FeignMultipartSupportConfig上传图片配置

在对应的boot项目上关闭全局的上传图片的配置

@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上面添加

@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);

}

就可以实现对应的服务做图片的上传,针对的图片微服务就可以实现数据的额接收。

对应配置文件的代码

@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;

}

}

package com.zhht.config;

import feign.RequestTemplate;

import feign.codec.EncodeException;

import feign.codec.Encoder;

import feign.form.ContentType;

import DesSUZfeign.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 SpringManyMhttp://ultipartFilesWriter());

}

public void encode(Object object, Type bodyType, RequestTemplate template) throws EncodeException {

if (bodyType.equals(MultipartFile.class)) {

MultipartFile file = (MultipartFile) object;

if (file != null) {

Map 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 data = Collections.singletonMap("imgList", object);

super.encode(data, MAP_STRING_WILDCARD, template);

return;

}

}

super.encode(object, bodyType, template);

}

}

如何使用Feign上传图片

添加依赖,支持SpringEncoder

io.github.openfeign.form

feign-form

3.4.1

io.github.openfeign.form

feign-form-spring

3.4.1

将SpringFormEncoder的默认处理

encoder配置为SpringEncoder

@Configuration

public class FeignMultipartSupportConfig {

@Bean

public Encoder multipartFormEncoder(ObjectFactory messageConverters) {

return new SpringFormEncoder(new SpringEncoder(messageConverters));

}

}

编写client

@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 uploadImage(@RequestPart("file") MultipartFile file);

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python基本语法(python基本语法规则)
下一篇:算法训练 进制转换(2转10)(算法训练是什么意思)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~