Spring boot上传文件时MultipartFile为空问

2018-10-08  本文已影响0人  大树懒呵

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

form 表单:

<form action="/upload" enctype="multipart/form-data" method="post" >
        <input type="file" name="file"><br>
        <input type="submit" value="提交">
</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

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

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

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

猜你喜欢

热点阅读