注:仅作为自己学习遇到的一点小问题,记录一下过程
一、环境说明
spring-boot版本:2.1.4.RELEASE
JDK:1.8
二、问题描述
1、在使用RequestParam请求时,一直抛出异常:Current request is not a multipart request
@RequestParam("file") MultipartFile file
2、在去掉RequestParam,file一直为null, 无法接收上传的文件
三、排查过程
通过在网上寻找一些博客,比如:
//排除原有的Multipart配置 @EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class}) public class Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
问题还是一样没有解决。
后面在通过查找注解时发现有个@RequestPart(这个注解自己之前一直没有使用过),了解了一下
1.@RequestPart这个注解用在multipart/form-data表单提交请求的方法上。 2.支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输的。 3.@RequestParam也同样支持multipart/form-data请求。 4.他们最大的不同是,当请求方法的请求参数类型不再是String类型的时候。 5.@RequestParam适用于name-valueString类型的请求域,@RequestPart适用于复杂的请求域(像JSON,XML)。
上述了解引用权威分析@RequestParam和@RequestPart 的区别(官方文档)-阿里云开发者社区
将代码改成
(@RequestPart MultipartFile file)
就可正常接收上传的文件。
如有错误之处,请指正。