使用FormData上传图片和JSON数据注意事项
1、前端上传数据需要使用方法JSON.stringfy进行包裹(否则后端无法解析会报错)
2、后端采用字符串方式接收(直接用对象类型无法解析会报错)
3、后端接收到字符串后可以使用JSON.parseObject(字符串,对象class文件)进行解析
4、前端需要上传文件必须采用FromData格式接收,否则会报Current request is not a multipart request类型错误
5、参数不匹配不会导致Current request is not a multipart request错误,而是会报Required request part 'xxx' is not present
6、使用@RequestBody只能接收JSON数据,无法处理multipart/form-data
7、后端接收参数区别
| 场景 | 使用方式 | Content-Type |
|---|---|---|
| 纯 JSON 数据 | @RequestBody | application/json |
| 文件上传 | @RequestPart 或 @RequestParam | multipart/form-data |
| JSON + 文件 | @RequestPart + @RequestParam | multipart/form-data |
| 表单数据 | @RequestParam | application/x-www-form-urlencoded |
@RequestParam | 接收普通参数(字符串、数字等) | ❌ 不能自动转换复杂对象 |
@RequestPart | 接收 multipart 请求中的各部分 | ✅ 可以自动转换 JSON 为对象(需要 Blob 包装) |
8、出现Required request part 'xxx' is not present错误,注意是否未设置文件上传参数是否为空,
设置@RequestPart(value='xxx', required=false)/@RequestParam(value='xxx', required=false)
