springBoot上传文件时MultipartFile报空问题解决方法

2026-02-02 19:21:40

1.问题描述:

之前用spring MVC,转成spring boot之后发现上传不能用。网上参考说是spring boot已经有CommonsMultipartResolver了,但是我的上传后台接收的还是null。

2.解决方法

加入配置类

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.multipart.MultipartResolver;

import org.springframework.web.multipart.commons.CommonsMultipartResolver;

@Configuration

public class UploadConfig {

//显示声明CommonsMultipartResolver为mutipartResolver

@Bean(name = "multipartResolver")

public MultipartResolver multipartResolver() {

CommonsMultipartResolver resolver = new CommonsMultipartResolver();

resolver.setDefaultEncoding("UTF-8");

//resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常

resolver.setResolveLazily(true);

resolver.setMaxInMemorySize(40960);

//上传文件大小 5M 5*1024*1024

resolver.setMaxUploadSize(5 * 1024 * 1024);

return resolver;

}

}

在springboot启动类上加入注解

//排除原有的Multipart配置

@EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})

public class Application extends SpringBootServletInitializer {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

特别注意Controller接收的时候一定要加上@RequestParam,否则不可用,如下所示:

@RequestParam("file") MultipartFile multipartFile

上面的解决方式不一定是适合你所遇到的场景,因为我们写的代码不一样,虽然报错一样,但是原因大概率是不同的,我遇到的是我前端传过来的参数名称写的是file,但是后端控制层接受的时候@RequestParam("file")没有写这个,导致找不到,所以才报的空指针异常,我加上以后就好使了.