java - 使用DispatcherServlet后MultipartFile接收不到文件
高洛峰
高洛峰 2017-04-18 10:30:38
0
3
861

使用DispatcherServlet

@Configuration
public class WebConfig {   
    @Bean
    public ServletRegistrationBean apiV1ServletBean(WebApplicationContext wac) {
        DispatcherServlet ds = new DispatcherServlet(wac);
        ServletRegistrationBean bean = new ServletRegistrationBean(ds, "/*");
        bean.setName("xxx");
       bean.addUrlMappings("/xxx/*");
       return bean;
   }

}

MultipartFile接收不到文件
@RequestMapping(method = RequestMethod.POST)
    public Response<String> site(@RequestParam("file") MultipartFile file, String userId, HttpServletRequest request) {

}

错误报告:
Required request part 'file' is not present

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(3)
Peter_Zhu

確定參數名稱"file"對嗎?
試下這樣,我是這樣用的沒問題。

List<String> imgUrls=new ArrayList<>();
MultipartHttpServletRequest multipartRequest =(MultipartHttpServletRequest) request;
List<MultipartFile> files=multipartRequest.getFiles("file");

再加上前端的

<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" multiple>
<input type="submit" ">
</form>
巴扎黑

雷雷

迷茫

我今天剛好遇到這個問題,研究解決了。

這個因為你自己注入的ServletRegistrationBean跟spring boot預設注入的ServletRegistrationBean的配置不一樣。你自己注入的ServletRegistrationBean預設沒有配置處理上傳請求的。

請參考以下配置:

    //自动注入spring boot默认的上传配置
    @Autowired
    private MultipartConfigElement multipartConfigElement;
    @Bean
    public ServletRegistrationBean apiV1ServletBean(WebApplicationContext wac) {
        DispatcherServlet servlet = new DispatcherServlet(wac);
        ServletRegistrationBean bean = new ServletRegistrationBean(servlet, "/api/*");
        //注入上传配置到自己注册的ServletRegistrationBean
        bean.setMultipartConfig(multipartConfigElement);
        bean.setName("ApiServlet");
        return bean;
    }
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板