最近,寫了關于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);
最后再測試就會成功!