SpringBoot接收multipart/form-data数据

前言

最近项目上有个三方的推送接口,因为推送数据包含了文件流和一些其他信息,所以推送的格式是multipart/form-data,开发种一般很少写这种既包含文件,又包含其他信息的接口,所以一时间还真想不起来该怎么写,下面总结了一下,以免后面又忘掉了

过程

首先肯定是post请求,所以我们要这么写,带上consumes参数,表示用formdata表单处理

1
@PostMapping(value = "/receiveKs", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)

下面给一个正确示例

1
2
3
4
public R<Boolean> receiveKs(@RequestParam("sn") String deviceSn, @RequestParam("alarm_info") JSONObject alarmInfo, @RequestPart(value = "picture", required = false) MultipartFile[] pics) {
log.info("接收到sn:{} 信息:{} 图片数量:{}", deviceSn, alarmInfo, pics != null ? pics.length : 0);
return R.ok();
}

RequestParam表示要接收的字段,可以说就是key-value形式的,@RequestParam("sn")标示我要取出key=sn的value值,如果是string,后面用string接收即可,如果是json,那用json接收,如果是单个文件的话,直接用MultipartFile接收,多个文件的话用MultipartFile[]接收