SpringBoot上傳文件時MultipartFile報空問題解決方法


1.問題描述

spring boot上傳不能用,上傳后台接收的還是null。總是報各種錯誤例如:Required request part 'file' is not present,Current request is not a multipart request.
SpringBoot默認是基於StandardServletMultipartResolve處理,MultipartStandardServletMultipartResolver依賴於Servlet3.0對multipart請求的支持(始於Spring3.1);CommonsMultipartResolver使用Jakarta Commons FileUpload解析multipart請求。本文最終采用CommonsMultipartResolver。

2.解決辦法

2.1 加入配置類

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);
        //設置單個上傳數據總大小25M
        resolver.setMaxUploadSizePerFile(25*1024*1024);
        //設置總上傳數據總大小50M
        resolver.setMaxUploadSize(5 * 1024 * 1024);
        return resolver;
    }

}

2.2 在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM