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