Spring boot上传文件时MultipartFile为空问题

首先我贴下我出问题的环境:

form 表单:


1.enctype="multipart/form-data" 这个要有
2.name="file" file要有name


后端

    @RequestMapping(value = "/upload",method = RequestMethod.POST)
    @ResponseBody
    public String upload(@RequestParam("file") MultipartFile file){
          .....
    }

可问题来了,后端收到的file总是null。
后来研究了一会儿才发现是因为自己在@configuration定义了MultipartResolverbean的缘故

    @Bean
    public MultipartResolver multipartResolver(){
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        multipartResolver.setMaxUploadSize(1000000);
        return multipartResolver;
    }

要解决null的问题,只要把自己定义的这个MultipartResolverbean去掉就好了
原因在于:如果你使用的springboot那么springboot会自动给你配置 MultipartResolverbean

Spring boot上传文件时MultipartFile为空问题_第1张图片
MultipartAutoConfiguration

我自己的 MultipartResolver和springboot的自动配置差的主要地方是我用了 CommonsMultipartResolver而它用了 StandardServletMultipartResolver

我看到这的时候还是不明白,为什么我自己定义MultipartResolver就不行呢,照理说使用自己的配置而不使用springboot的自动配置是完全没问题的。
后来debug的时候我发现问题应该是出在了MultipartFile

StandardMultipartFile

然后是

MultipartFile

我觉得问题的根源出在了 MultipartFileMultipartResolver不一致,从而导致了 NULL( 当然,我并没有具体的探究下去,这仅仅是我个人的猜测。如果这个理解有误,麻烦大神能告诉我一下,方便我修改。)

你可能感兴趣的:(Spring boot上传文件时MultipartFile为空问题)