Spring Boot接收前端上传的多个文件
突然被问到这个功能,太久没用到这个功能,印象有些模糊,这个文章记录一下.
前端那里会传一个字段和一些文件到后端,然后后端接收保存一下.
代码
可以直接使用 List<MultipartFile>
来接收多个文件,如果要传别的参数可以用对象接收
@PostMapping(value = "uploadFiles")
@ResponseBody
public RespBean uploadFiles(@RequestParam(value = "file")List<MultipartFile> files, User user) {
for (MultipartFile file : files) {
System.out.println(file.getOriginalFilename());
}
System.out.println(user);
return RespBean.ok("ok");
}
或者添加 @RequestParam
@PostMapping(value = "uploadFiles")
@ResponseBody
public RespBean uploadFiles(@RequestParam(value = "file")List<MultipartFile> files, @RequestParam(value = "id") String id) {
for (MultipartFile file : files) {
System.out.println(file.getOriginalFilename());
System.out.println(id);
}
return RespBean.ok("ok");
}
看之前的代码里在接收的对象前加了个 @RequestBody , 这个会导致报错
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=**;charset=UTF-8' not supported
stackoverflow 老哥的话 @RequestBody means use of JSON
or XML
data with maps your DTO bean.