Multipart with Spring Boot Rest Service

时间:2015-06-02 11:11:52

标签: spring rest spring-mvc spring-boot

我有一个REST服务定义如下

@RequestMapping(value = "/{userId}/profileimage/{language}", method = RequestMethod.PUT)
public String uploadProfileImage(@PathVariable String userId, @RequestParam MultipartFile file, @PathVariable String language) throws IOException { ...}

并定义了一个多部分过滤器

@Bean
public FilterRegistrationBean multipartFilter() {
    FilterRegistrationBean filterRegBean = new FilterRegistrationBean();
    filterRegBean.setFilter(new MultipartFilter());
    List<String> urlPatterns = new ArrayList<String>();
    urlPatterns.add("/*");
    filterRegBean.setUrlPatterns(urlPatterns);
    return filterRegBean;
}

以及multipartConfigElement

@Bean
public MultipartConfigElement multipartConfigElement(){
    MultipartConfigElement config = new MultipartConfigElement("");
    return config;
}

但是当我向REST服务发送多部分消息时,我仍然会收到以下异常:

  

Servlet [dispatcherServlet]的Servlet.service()在路径[/ dev]的上下文中引发异常[请求处理失败;嵌套异常是java.lang.IllegalArgumentException:预期的MultipartHttpServletRequest:是否配置了MultipartResolver?]

该服务受Spring安全保护(作为辅助信息),Spring Boot在启动时记录以下内容

  

添加了现有的Filter初始化bean'ultipartFilter'; order = 2147483647,resource = class path resource [com / fl / wir / config / MvcConfigurations.class]

     

映射过滤器:'multipartFilter'到网址:[/ *]

     

MultipartAutoConfiguration          - 找到@ConditionalOnClass类:javax.servlet.Servlet,org.springframework.web.multipart.support.StandardServletMultipartResolver,javax.servlet.MultipartConfigElement(OnClassCondition)          - 匹配(OnPropertyCondition)

     

DispatcherServletAutoConfiguration.DispatcherServletConfiguration#multipartResolver          - @ConditionalOnMissingBean(names:multipartResolver; SearchStrategy:all)发现以下[multipartResolver](OnBeanCondition)

知道为什么我仍然得到例外吗? (使用Spring-Boot 1.2.3.RELEASE)

1 个答案:

答案 0 :(得分:5)

您正在使用复杂功能,要启用文件上传,只需使用application.properties中的properties正确配置即可。

multipart.enabled=true

并确保你的课程路径上有spring-webmvc(根据你已经使用的注释来判断)。

然而还有另外一件事,即文件上传only work for POST请求不是任何其他内容,因此PUT将无法正常工作。

相关问题