FeignSpring Cloud Feign Client 调用文件上传接口实现MultipartFile上传文件功能
场景:
跨服务调用文件上传接口
技术栈:Feign nacos
报错:
feign.codec.EncodeException: Error converting request body
解决方案:
step1:添加pom依赖
-
<!--这里我使用nacos注册中心,如果没有使用可以不用nacos-discovery-->
-
<dependency>
-
<groupId>com.alibaba.cloud</groupId>
-
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-openfeign</artifactId>
-
</dependency>
step2:添加配置类 FeignMultipartSupportConfig.java
-
-
import feign.codec.Encoder;
-
import feign.form.spring.SpringFormEncoder;
-
import org.springframework.beans.BeansException;
-
import org.springframework.beans.factory.ObjectFactory;
-
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-
import org.springframework.cloud.openfeign.support.SpringEncoder;
-
import org.springframework.context.annotation.*;
-
import org.springframework.web.client.RestTemplate;
-
-
-
-
public class FeignMultipartSupportConfig {
-
-
-
-
-
public Encoder multipartFormEncoder() {
-
return new SpringFormEncoder(new SpringEncoder(new ObjectFactory<HttpMessageConverters>() {
-
-
public HttpMessageConverters getObject() throws BeansException {
-
return new HttpMessageConverters(new RestTemplate().getMessageConverters());
-
}
-
}));
-
}
-
-
-
public feign.Logger.Level multipartLoggerLevel() {
-
return feign.Logger.Level.FULL;
-
-
}
-
}
step3:编写Feign Client
-
import com.hzd.config.FeignMultipartSupportConfig;
-
import com.privatecloud.core.dto.JsonResult;
-
import org.springframework.cloud.openfeign.FeignClient;
-
import org.springframework.http.MediaType;
-
import org.springframework.web.bind.annotation.PostMapping;
-
import org.springframework.web.bind.annotation.RequestParam;
-
import org.springframework.web.bind.annotation.RequestPart;
-
import org.springframework.web.multipart.MultipartFile;
-
-
/**
-
* 注意点
-
* 1:configuration = FeignMultipartSupportConfig.class
-
* 2.consumes = MediaType.MULTIPART_FORM_DATA_VALUE
-
*/
-
-
-
public interface BaseserverClient {
-
-
/**
-
* 文件上传至阿里云
-
* @param file
-
* @param imei
-
* @param sysDictItemId
-
* @return
-
*/
-
-
JsonResult<String> upload(; MultipartFile file)
-
}
step4:调用
-
-
-
-
-
-
public class PlantAIController {
-
-
-
-
private BaseserverClient baseserverClient;
-
-
-
public void test({ MultipartFile file)
-
-
baseserverClient.upload(file);
-
-
}
-
-
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgaaefk
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24