springcloud怎么使用Feign后台内部传递MultipartFile
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇文章主要介绍了springcloud怎么使用Feign后台内部传递MultipartFile,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了
千家信息网最后更新 2025年01月17日springcloud怎么使用Feign后台内部传递MultipartFile
这篇文章主要介绍了springcloud怎么使用Feign后台内部传递MultipartFile,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
如何使用Feign后台内部传递MultipartFile
先修改Feign Client接口
import feign.codec.Encoder;import feign.form.spring.SpringFormEncoder;import org.springframework.cloud.openfeign.FeignClient;import org.springframework.context.annotation.Bean;import org.springframework.http.MediaType;import org.springframework.web.bind.annotation.DeleteMapping;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; /** * @author linli * @date 20-06-27 */@FeignClient(value = "upload", fallbackFactory = UploadFallbackFactory.class, configuration = UploadClient.MultipartSupportConfig.class)public interface UploadClient { @PostMapping(path = "/upload-text", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) String uploadText(@RequestPart(name = "file") MultipartFile file); /** * 引用配置类MultipartSupportConfig.并且实例化 */ class MultipartSupportConfig { @Bean public Encoder feignFormEncoder() { return new SpringFormEncoder(); } }}
若SpringFormEncoder 引入报错,加上下面的依赖
io.github.openfeign.form feign-form 3.3.0 io.github.openfeign.form feign-form-spring 3.3.0
内部调用
private String uploadFile(String str) { FileOutputStream fos = null; FileInputStream fis = null; MultipartFile multipartFile = null; byte[] bt = str.getBytes(); File file = null; try { file = File.createTempFile("file" + UUID.randomUUID(), ".txt"); fos = new FileOutputStream(file); fos.write(bt, 0, bt.length); fis = new FileInputStream(file); multipartFile = new MockMultipartFile("file", file.getName(), MediaType.TEXT_PLAIN_VALUE, fis); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } return uploadClient.uploadText(multipartFile); }
注意点
Feign进行跨服务传递MultipartFile文件
通过调用服务进行文件上传,避免每个需要上传文件的模块都写一遍上传服务,造成代码冗余。
本文主要包含通过feign进行文件上传模块。
使技术人员在开发过程中遇到问题时有地可查,有章可循。
通过feign进行跨服务传递MultipartFile文件
添加依赖
io.github.openfeign.form feign-form 3.0.3 io.github.openfeign.form feign-form-spring 3.0.3
添加配置文件
package com.ruiyi.twowayreferral.configurer;import feign.codec.Encoder;import feign.form.spring.SpringFormEncoder;import org.springframework.beans.factory.ObjectFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.autoconfigure.http.HttpMessageConverters;import org.springframework.cloud.openfeign.support.SpringEncoder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class MultipartSupportConfig { @Autowired private ObjectFactorymessageConverters; @Bean public Encoder feignFormEncoder() { return new SpringFormEncoder(new SpringEncoder(messageConverters)); }}
代码示例
@FeignClient(value = "controller-center")public interface CallFrignService { /** * @Create 文件上传 wanggx_ruiyi 2019.11.15 * @param uploadPath 文件上传地址 * @param file 上传的文件 * @return */ @PostMapping(value = "/api/v1/common/file/fileUpload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) String fileUpload(@RequestParam(value = "uploadPath", required = true) String uploadPath,@RequestPart(value = "file", required = true) MultipartFile file);}
感谢你能够认真阅读完这篇文章,希望小编分享的"springcloud怎么使用Feign后台内部传递MultipartFile"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
文件
篇文章
服务
后台
代码
模块
配置
人员
价值
兴趣
冗余
同时
地址
实例
技术
接口
更多
有章可循
朋友
知识
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全小组功能
服务器租赁合同范本
军人网络安全动画
网络打印机直接连接打印服务器
网络安全事件原因影响
雷神服务器是什么
郑州软件开发园在哪个区
网络安全法多项选择题
杭州定制app软件开发
领导对网络安全工作作出指示
百威sql数据库
e3 1231 v3是服务器吗
事业单位网络安全事件应急措施
安全上网网络安全教育手抄报
五常市科技网络技术
软件开发的工作是什么意思
安卓查数据库表
2020一季度网络安全份额
玩王牌竞速连接不上服务器怎么办
cmm 软件开发过程
华硕超融合专用服务器
软件开发可以申报技术职称吗
软件开发工程师薪资结
怎么开展网络安全宣传周
计算机网络安全问题剖析论文
人员多账号多角色数据库设计
校园网络安全问卷分析报告
数据库重新添加新账号
sql2012数据库下载
山西图众网络技术有限公司