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

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

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 Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,545评论 1 92
  • 今天,看到堂妹发的图片,在家门口左右两边,点上两只红蜡烛,说是元宵散灯了。一下子勾起了我尘封已久的记忆。以前,在家...
    艾米说阅读 468评论 0 1
  • 我有一个梦想; 想去一个地方; 和风一起飘荡; 你可知是何方; 处处鸟语花香; 对着大海歌唱; 像在梦中一样~
    清清风明月阅读 300评论 5 1
  • 看过寂静法师写的一本书<让孩子成才的秘密>里有句话印象深刻,孩子是父母的复印件。现在自己就验证了这句话。 平常早晚...
    肖绮华阅读 316评论 2 0