spring-boot 接收form表单 多文件加多字段数据(postman在form-data格式下传数组和集合)

前言

该博客多用于记录自己的问题

 在写项目的时候遇到这种业务情况:

需要保存整个页面的数据,数据包含多个字段信息多个文件

 结合网上的处理思路,我最终实现了这种业务需求并整理一下

前端单独提交字段和文件比较方便简单,本人不太了解前端,既然前端说要用form表单同时传字段和文件,那么我就以这样的方式去研究怎么去同时接收

先看一下最终结果

 

 其中遇到的一下问题

1.前端的数据格式是 multipart/form-data,不再是json格式,后端接收就不能加注解@RequestBody

 如:

 

 会报错,不支持这个方式

"msg": "Content type 'multipart/form-data;boundary=--------------------------958211735005905900137890;charset=UTF-8' not supported",

2. 所以前端就不能以对象的方式传数据,我不了解是否有其他解决方法,目前我的前端就是以键值对的方式给我数据,以postman为例

 数据格式form-data,其中files是文件,其余是一个对象的字段,需求是多个文件,所以是以数组的方式接收

注意的是用postmanform-data格式传数组  按上图所示即可

3.同理,前端用form表单传文件数组时也遇到了问题,开始是将文件放入了名叫files数组一起传,但是后台接收不到,我猜测是没按键值对方式的原因,

最终解决是,文件名"name"为files,value值为不同的文件,如同postman的格式 

4.其中,我的业务需求里,在对象中包含集合,看网上一些人说在上面这个传输格式下,不用注解@RequestBody,不会将集合自动装配到对象中,我用postman实验了一下,可以自动装配到对象中

需要注意的是:如何在form-data格式下传集合

如:

 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在后台接收Postman使用form-data递的对象和集合参数时,具体的处理方式取决于您使用的后台框架和语言。以下是一些常见的后台接收方式示例: 1. 使用Java Spring框架: 对象参数可以直接通过注解@RequestParam或@ModelAttribute进行绑定,例如: ```java @PostMapping("/api/your-endpoint") public void handleFormData(@RequestParam("baseUserInfo.umId") String umId, @RequestParam("baseUserInfo.userName") String userName, @RequestParam("name") String name, @RequestParam("members") List<String> members) { // 在这里处理接收到的参数 } ``` 2. 使用Node.js Express框架: 可以使用req.body对象来接收form-data中的参数,例如: ```javascript app.post('/api/your-endpoint', (req, res) => { const baseUserInfo = { umId: req.body['baseUserInfo.umId'], userName: req.body['baseUserInfo.userName'] }; const name = req.body.name; const members = req.body.members; // 在这里处理接收到的参数 }); ``` 3. 使用Python Flask框架: 可以使用request.form接收form-data中的参数,例如: ```python from flask import Flask, request app = Flask(__name__) @app.route('/api/your-endpoint', methods=['POST']) def handle_form_data(): baseUserInfo = { 'umId': request.form['baseUserInfo.umId'], 'userName': request.form['baseUserInfo.userName'] } name = request.form['name'] members = request.form.getlist('members') # 在这里处理接收到的参数 ``` 根据您的后台框架和语言,您可以参考以上示例进行相应的参数接收和处理。请注意,具体的代码可能会因为您的业务逻辑而有所变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值