美文网首页
Spring boot上传文件时MultipartFile为空问

Spring boot上传文件时MultipartFile为空问

作者: 大树懒呵 | 来源:发表于2018-10-08 22:00 被阅读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(当然,我并没有具体的探究下去,这仅仅是我个人的猜测。如果这个理解有误,麻烦大神能告诉我一下,方便我修改。)

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/xycsaftx.html