当前位置: 首页 > news >正文

SpringBoot18-文件上传助手MultipartResolver

一、MultipartResolver 是什么?

你可以把 MultipartResolver 理解为:

Spring 用来解析“上传文件”的小助手。

当浏览器上传文件时,发送的数据格式是 multipart/form-data

Spring 默认无法直接理解这种格式。所以需要一个专门的组件来 解析上传的数据,把:

文件 → 变成 MultipartFile 对象
文本字段 → 变成普通参数

这个负责解析的人,就是 MultipartResolver


1-1、场景

你写了一个文件上传接口:

@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) {System.out.println(file.getOriginalFilename());return "ok";
}

你能够拿到 MultipartFile file靠的就是 MultipartResolver

如果没有它,你写的是:

String file

而不是文件对象,文件就变成乱码或无法识别。


1-2、它是怎么工作的?

当请求来了,Spring MVC 会看:

请求的 Content-Type 是不是 multipart/form-data?

  • 如果是 → 交给 MultipartResolver 处理
  • 否则 → 当普通请求处理

也就是说:

MultipartResolver 只负责文件上传的请求

二、MultipartResolver 的常见实现(面试常考)

实现类属于谁现在常用吗?说明
CommonsMultipartResolverApache Commons FileUpload 技术❌ 已过时(老项目用)以前的标准实现
StandardServletMultipartResolverServlet 3.0+ 内置支持✅ 新项目推荐Spring Boot 默认就用它

所以,在 Spring Boot 中,你基本不需要配置它,它自动启用


三、在 Spring Boot 中怎样设置文件上传的大小限制?

只需要在 application.yml 配一下文件大小限制:

spring:servlet:multipart:max-file-size: 10MBmax-request-size: 20MB

然后直接写上传接口就能用了。

配置项说明
max-file-size单个上传文件的最大大小限制
max-request-size一次请求所有文件/数据的总体上限

不配 → 默认限制是 1MB(Spring Boot 默认值)
配了 → 可以上传更大的文件

Spring Boot 已经自动帮你注册了:

StandardServletMultipartResolver

那什么时候需要手动配置呢?

只在 老项目(Spring MVC XML 配置时代) 才需要。

<!-- 老项目中使用 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize" value="10485760"/>
</bean>

一句话记忆

浏览器上传文件 → 数据是 multipart/form-data → Spring 看不懂
MultipartResolver → 专门把它变成 MultipartFile → 你就能 @RequestParam 拿到文件


总结

概念含义
MultipartResolverSpring 中专门解析上传文件的人
MultipartFile解析后的文件对象(你在 Controller 里用的)
Spring Boot 默认使用StandardServletMultipartResolver
老项目可能使用CommonsMultipartResolver
http://www.dtcms.com/a/561438.html

相关文章:

  • python学习之os,sys,time,random模块
  • 排序算法实战:从插入排序到希尔排序的实现与性能对决
  • Harmony鸿蒙开发0基础入门到精通Day10--JavaScript篇
  • VMware安装CentOS7操作系统
  • 搬瓦工做网站方法wordpress数据类型
  • 常德网站网站建设软件工程师英文
  • Win11超精简定制版本Tiny11安装教程来袭
  • 【第1章>第2节】图像“腐蚀”处理的理论分析与MATLAB仿真测试
  • 如何将BOOST库集成到VS2019中去使用呢?
  • 黑龙江做网站公司网站建设方案书网络部署方案
  • 乐清微网站建设做网络运营需要掌握什么
  • java学习--冒泡排序
  • iis7.5 网站配置简述网站建设基本步骤
  • visual studio 获取并输出 $(ProjectDir) 的所在的具体路径
  • wordpress网站搜索引擎微信公众号运营模式
  • 海洋捕食算法的详细原理,公式,应用案例MPA-BP
  • 动态规划的解题套路1-泰波那契模型
  • 高端建站咨询京津冀协同发展英文
  • 【Ubuntu】ubuntu虚拟机磁盘不够扩容后开机黑屏-解决方案
  • 网站建设 教学视频教程网站wap版影响权重么
  • Efficient Memory Management for Large Language Model with PagedAttention
  • 东莞网站建设推广费用wordpress上不去了
  • 网站301重定向$cms和wordpress
  • 网站建设实训进程计划九龙坡区网站建设
  • 【LeetCode 每日一题】1414. 和为 K 的最少斐波那契数字数目
  • 怎么用一个主机做多个网站制作网站报价单
  • 5、webgl基本概念 + 绘制多边形 + 绘制圆 + 绘制圆环
  • 触摸屏网站如何做电子商务网站建设清华大学
  • 北京做网站的大公司惠阳网站建设
  • 网站开发做什么简单wordpress 自动发卡