springcloud怎么使用Feign后台内部传递MultipartFile
发表于:2024-10-25 作者:千家信息网编辑
千家信息网最后更新 2024年10月25日,这篇文章主要介绍了springcloud怎么使用Feign后台内部传递MultipartFile,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了
千家信息网最后更新 2024年10月25日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安全错误
数据库的锁怎样保障安全
高胜串口服务器地址
大同网络技术推荐厂家
易语言数据库
常用fda数据库介绍
gis软件开发与设计
网页版软件开发成本
同答一套网络安全竞赛题
杭州培训软件开发公司
义乌app软件开发计划
计算机网络技术基础论文
先关闭数据库还是监听
元气骑士作弊服务器
计算机网络技术适合女孩子
服务器设备管理台账
lol手游就几个服务器吗
石家庄软件开发公司学校
郴州手机棋牌游戏软件开发
软件开发的经济基础
服务器存储拓扑图
安徽专业软件开发五星服务
云计算与网络安全的文章
mdf恢复数据库
上海网络安全软件
数据库中的log是什么文件
酒店服务器管理员
网络安全优秀黑板报高中
我的世界网易版山寨服务器
铁路 网络安全解决方案
东华理工软件开发
c能进行bs架构软件开发吗