SpringBoot接受文件和对象
SpringBoot接受文件和对象:
使用场景:某个接口,‘需要同时接受文件和实体,'也就是参数
一、 这个时候,前端就不能'json'格式传送数据了,要用到'multipart/form-data;'这种格式传送数据。
二、 那么,这个时候,后端应该怎样接受这个参数和文件呢?
1 .接受' HttpServletRequest',自己处理request (不推荐)
2 •接受实体,将文件放到对象属性中(推荐)
3 .接受参数,将文件放到接受参数中
这种方法适合接受单个文件参数,多参数还是建议用对象接受,方便扩展。
4.一个坑,使用第二种方法的时候,一定不要加'@RequestBody 加了这个注解,就会报如下错误。.
所以,接受知,不要使用'@RequestBody '注解。但是'©Validated'注解(校验参数的注解)是可以使用的。
一,这个时候,前端就不能json格式传送数据了,要用到multipart/form・data;这种格式传送数据。 二,那么,这个时候,后端应该怎样接受这个参数和文件呢?
1 .接受HttpServletRequest,自己处理request (不推荐)
@PostMapping(value = "/upload")
@ResponseBody
public String handleFilellpload(HttpServletRequest request) {
MultipartHttpServletRequest params=((MultipartHttpServletRequest) request); //获取文件
List<MultipartFile> files = ((MultipartHttpServletRequest) request) .getFiles(“file”)
St ring name=params. getParameter(^Viame"); 原文链接:https://biog.csdn.net/weixin_4i854206/artick
2•接受实体,将文件放到对象属性中(推荐)
1 在这里不能加@RequestBody或@RequestParam,目前暂不清楚原因。
public class UserFileReq {
//参数
private String username;
//文件
private MultipartFile file;
//省略get/set
@PostMapping(value = "/upload")
@ResponseBody
public String handleFilellpload(UserFileReq req) {
//文件和参数都在实体中了
}
你的浏览器目前处于缩放状态,页面可能会出现错 位现象,建议100%大小显示。
3.接受参数,将文件放到接受参数中
这种方法适合接受单个文件参数,多参数还是建议用对象接受,方便扩展
@PostMapping(value = "/upload")
@ResponseBody
public String handleFilellpload(MultipartFile file) { }
4.一个坑,使用第二种方法的时候,一定不要加@RequestBody,加了这个注解,就会报如下错误。
"timestamp": 1571196217195,
"status": 415,
"error": "Unsupported Media Type",
"exception": "org.springframework.web.HttpMediaTypeNotSupportedException",
"message": "Content type 1multipart^form-data;boundary=20OOYeFBpE "
"path": "file/upload"
}
原文链接:https://blog.csdn.net/weixin_41854206/artick
作者主页:https://blog.csdn. net/weixin_41854206weixi r
所以,接受文件,不要使用@RequestBody注解
但是@Validated注解(校验参数的注解)是可以使用的。
版权声明:本文为CSDN博主FLitongZeroJ的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/LitongZero/article/details/102583W 你的浏览器目前处于缩放状态,页面可能会岀现错x