Spring Boot实现文件上传的一些心得
最近,写了关于spring boot实现文件上传的接口,本来感觉挺简单的,但是每次调用接口的时候都会给报异常:org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'file' is not present.这就令我很费解,于是在Stack Overflow找相关的帖子,基本上都是说在pom.xml文件中需要引入spring-boot-starter-web相关依赖,就会自动包含了文件上传的依赖。
文件上传的controller层代码如下:
用apizza去调用接口的时候就会报错:
这就令我很费解,最后再细细地看了一遍代码发现原来写了一个AppConfig类,在类上面注解了@Configuration,又重新自定义了dispatcherServletRegistration这个方法:
导致自己注入的ServletRegistrationBean跟spring boot默认注入的ServletRegistrationBean的配置不一样。自己注入的ServletRegistrationBean默认没有配置处理上传请求的。
所以需要再自己注入的类中加上:
@AutoWired
private MultipartConfigElement multipartConfigElement;
并且在对应的dispatcherServletRegistration方法中设置文件上传
注入上传配置到自己注册的ServletRegistrationBean
registration.setMultipartConfig(multipartConfigElement);
最后再测试就会成功!