导航菜单
首页 >  SpringMVC中MultipartResolver 获取文件内容为空问题  > Spring boot上传文件时MultipartFile为空问题

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

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

form 表单:

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

后端

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

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

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

相关推荐: