SpringBoot实现接受文件和对象

 更新时间:2025年12月06日 09:36:30   作者:LitongZero  
SpringBoot中接受文件和对象的场景,推荐使用`multipart/form-data`格式,后端可以通过接受实体并将文件放入对象属性中来处理数据,使用`@Validated`注解进行参数校验是可行的,但要注意不要与`@RequestBody`注解同时使用

SpringBoot接受文件和对象

使用场景

某个接口,需要同时接受文件和实体,也就是参数。

  • 这个时候,前端就不能json格式传送数据了,要用到multipart/form-data;这种格式传送数据。
  • 那么,这个时候,后端应该怎样接受这个参数和文件呢?

1.接受HttpServletRequest,自己处理request(不推荐)

@PostMapping(value = "/upload")    
@ResponseBody    
public String handleFileUpload(HttpServletRequest request) {    
MultipartHttpServletRequest params=((MultipartHttpServletRequest) request);  
// 获取文件
List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file");   
// 获取参数
String name=params.getParameter("name");  

2.接受实体,将文件放到对象属性中(推荐)

public class UserFileReq {
	// 参数
    private String username;
    // 文件
    private MultipartFile file;
    // 省略get\set
}

@PostMapping(value = "/upload")    
@ResponseBody    
public String handleFileUpload(UserFileReq req) {    
// 文件和参数 都在实体中了
}

3.接受参数,将文件放到接受参数中

这种方法适合接受单个文件参数,多参数还是建议用对象接受,方便扩展

@PostMapping(value = "/upload")    
@ResponseBody    
public String handleFileUpload(MultipartFile file) {    
}

4.一个坑

使用第二种方法的时候,一定不要加@RequestBody,加了这个注解,就会报如下错误。

{
 "timestamp": 1571196217195,
 "status": 415,
 "error": "Unsupported Media Type",
 "exception": "org.springframework.web.HttpMediaTypeNotSupportedException",
 "message": "Content type 'multipart/form-data;boundary=2gOOYeFBpE;charset=UTF-8' not supported",
 "path": "/file/upload"
}

所以,接受文件,不要使用@RequestBody注解

但是@Validated注解(校验参数的注解)是可以使用的。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot添加富文本编辑器操作步骤

    SpringBoot添加富文本编辑器操作步骤

    富文本编辑器是一种能够编辑和展示富文本内容的工具或程序,与纯文本编辑器不同,富文本编辑器可以处理文本的格式、样式、布局等方面,使文本更加丰富多样,本文给大家介绍了SpringBoot添加富文本编辑器操作步骤,需要的朋友可以参考下
    2024-01-01
  • 详解如何将JAR包发布到Maven中央仓库

    详解如何将JAR包发布到Maven中央仓库

    这篇文章主要介绍了详解如何将JAR包发布到Maven中央仓库,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • java简单工厂模式入门

    java简单工厂模式入门

    下面小编就为大家带来一篇java工厂模式入门文章。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-07-07
  • Java实现企业员工管理系统

    Java实现企业员工管理系统

    这篇文章主要为大家详细介绍了Java实现企业员工管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 详解Java中native关键字

    详解Java中native关键字

    这篇文章主要为大家详细介绍了Java中native关键字,什么是Native Method
    2016-02-02
  • JavaSwing实现小型学生管理系统

    JavaSwing实现小型学生管理系统

    这篇文章主要为大家详细介绍了JavaSwing实现小型学生管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • java实现遗传算法实例分享(打印城市信息)

    java实现遗传算法实例分享(打印城市信息)

    本文介绍java实现遗传算法的实例,代码中使用城市名做为数据,可以打印当前代数的所有城市序列,以及其相关的参数,大家参考使用吧
    2014-01-01
  • springcloud-feign调用报错问题

    springcloud-feign调用报错问题

    这篇文章主要介绍了springcloud-feign调用报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • java异常和错误类总结(必看篇)

    java异常和错误类总结(必看篇)

    下面小编就为大家带来一篇java异常和错误类总结(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • 基于Java开发一个Markdown到Word文档转换工具

    基于Java开发一个Markdown到Word文档转换工具

    本文介绍了一个用Java开发的Markdown到Word文档转换工具,该工具通过MarkdownToWordConverter类实现,利用flexmark库将Markdown内容转换为HTML,借助jsoup库规范化HTML,再通过docx4j库将处理后的HTML导入并保存为Word文档,需要的朋友可以参考下
    2025-07-07

最新评论