RestTemplate中multipart form data传多个参数的处理办法

news/2024/9/23 12:29:06/
http://www.w3.org/2000/svg" style="display: none;">
应用场景

前端请求后端上传单个或多个文件,同时携带其他参数,后端再转发到第三方服务。

思路
  1. 拿到前端提交的multipart参数
  2. 读取参数并区分文件/其他参数
  3. 请求第三方
实现

拿到前端提交的参数并解析到MultiValueMap:

private static MultiValueMap<String, Object> parseMultipart(ServerRequest request) {MultiValueMap<String, Object> multiValueMap = null;try {HttpServletRequest httpServletRequest = request.servletRequest();Collection<Part> parts = httpServletRequest.getParts();multiValueMap = new LinkedMultiValueMap<>();for (Part part : parts) {String fileName = part.getSubmittedFileName();// 其他普通参数if (StringUtils.isBlank(fileName)) {ContentType parseContentType = ContentType.parse(part.getContentType());multiValueMap.add(part.getName(), IoUtil.read(part.getInputStream(), parseContentType.getCharset()));}// 文件else {multiValueMap.add(part.getName(), new InputStreamResource(part.getInputStream()) {@Overridepublic long contentLength() {return part.getSize();}@Overridepublic String getFilename() {return part.getSubmittedFileName();}});}}} catch (IOException | ServletException e) {throw new RuntimeException(e);}return multiValueMap;}

发起请求:

HttpEntity<Object> httpEntity = new HttpEntity<>(requestDto.getMultipartMap(), requestDto.getHeaders());
String response = restTemplate.exchange(url, httpMethod, httpEntity, String.class);

http://www.ppmy.cn/news/1465570.html

相关文章

行为设计模式之策略模式

文章目录 概述原理结构图 代码实现小结 概述 策略模式(strategy pattern)的原始定义是&#xff1a;定义一系列算法&#xff0c;将每一个算法封装起来&#xff0c;并使它们可以相互替换。策略模式让算法可以独立于使用它的客户端而变化。 在软件开发中也会遇到相似的情况&…

2023年03月 Python(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,共50分) 第1题 有如下程序段: with open(mistakes.txt, w) as f:words =[believe,

动物园规则怪谈【逻辑】

动物园规则怪谈【逻辑】 动物园规则怪谈1 某市动物园园区游客守则2 动物园员工守则&#xff08;蓝衣员工守则&#xff09;3 海洋馆门口张贴告示&#xff08;如果能看见&#xff0c;黑衣员工守则&#xff09;① 游客纸条&#xff08;慢慢被影响认知的过程&#xff09;4 海洋馆内…

[数据集][目标检测]脑肿瘤检测数据集VOC+YOLO格式9787张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;9787 标注数量(xml文件个数)&#xff1a;9787 标注数量(txt文件个数)&#xff1a;9787 标注…

python的range() 函数

range() 函数 《红楼梦》&#xff0c;又名《石头记》&#xff0c;实际上是一颗神石在人间游历的故事。而这块石头&#xff0c;就是我们的主人公贾宝玉。神石在投胎成宝玉前&#xff0c;向茫茫大士和渺渺真人讲起了自己的故事&#xff1a; 女娲氏炼石补天之时&#xff0c;于大…

100个 Unity小游戏系列六 -Unity 抽奖游戏专题四 翻卡游戏

一、演示效果 二、知识点讲解 2.1 布局 void CreateItems(){reward_data_list reward_data_list ?? new List<RewardData>();reward_data_list.Clear();for (int i 0; i < ItemCount; i){GameObject item;if (i 1 < itemParent.childCount){item itemParent…

Vue进阶之Vue无代码可视化项目(一)

Vue无代码可视化项目 项目搭建初始步骤拓展:工程项目从0-1项目规范化package.jsoncpell.jsoncustom-words.txtts-eslint规则.eslintrc.cjsgit钩子检查有没有问题type-checkspellchecklint:stylehusky操作安装pre-commitpnpm的commit规范package.json:commitlint.config.cjs安装…

头歌页面置换算法第2关:计算OPT算法缺页率

2 任务:OPT算法 2.1 任务描述 设计OPT页面置换算法模拟程序:从键盘输入访问串。计算OPT算法在不同内存页框数时的缺页数和缺页率。要求程序模拟驻留集变化过程,即能模拟页框装入与释放过程。 2.2任务要求 输入串长度作为总页框数目,补充程序完成OPT算法。 2.3算法思路 OPT算…