具有 Spring 引导休息服务的多部分
Multipart with Spring Boot Rest Service
我有一个 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.service() for servlet [dispatcherServlet] in context with path [/dev] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured?]
该服务受 spring 安全保护(作为辅助信息)并且 Spring 启动时会记录以下内容
Added existing Filter initializer bean 'multipartFilter'; order=2147483647, resource=class path resource [com/fl/wir/config/MvcConfigurations.class]
Mapping filter: 'multipartFilter' to urls: [/*]
MultipartAutoConfiguration
- @ConditionalOnClass classes found: javax.servlet.Servlet,org.springframework.web.multipart.support.StandardServletMultipartResolver,javax.servlet.MultipartConfigElement (OnClassCondition)
- matched (OnPropertyCondition)
DispatcherServletAutoConfiguration.DispatcherServletConfiguration#multipartResolver
- @ConditionalOnMissingBean (names: multipartResolver; SearchStrategy: all) found the following [multipartResolver] (OnBeanCondition)
知道为什么我仍然得到异常吗?
(使用 Spring-Boot 1.2.3.RELEASE)
您正在变得复杂,要启用文件上传,只需使用 application.properties
中的 properties 正确配置即可。
multipart.enabled=true
并确保您的 class 路径上有 spring-webmvc
(根据您已经使用的注释判断)。
但是还有一件事,那就是文件上传 only work for POST 不会请求任何其他请求,因此 PUT 将不起作用。
我有一个 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.service() for servlet [dispatcherServlet] in context with path [/dev] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured?]
该服务受 spring 安全保护(作为辅助信息)并且 Spring 启动时会记录以下内容
Added existing Filter initializer bean 'multipartFilter'; order=2147483647, resource=class path resource [com/fl/wir/config/MvcConfigurations.class]
Mapping filter: 'multipartFilter' to urls: [/*]
MultipartAutoConfiguration - @ConditionalOnClass classes found: javax.servlet.Servlet,org.springframework.web.multipart.support.StandardServletMultipartResolver,javax.servlet.MultipartConfigElement (OnClassCondition) - matched (OnPropertyCondition)
DispatcherServletAutoConfiguration.DispatcherServletConfiguration#multipartResolver - @ConditionalOnMissingBean (names: multipartResolver; SearchStrategy: all) found the following [multipartResolver] (OnBeanCondition)
知道为什么我仍然得到异常吗? (使用 Spring-Boot 1.2.3.RELEASE)
您正在变得复杂,要启用文件上传,只需使用 application.properties
中的 properties 正确配置即可。
multipart.enabled=true
并确保您的 class 路径上有 spring-webmvc
(根据您已经使用的注释判断)。
但是还有一件事,那就是文件上传 only work for POST 不会请求任何其他请求,因此 PUT 将不起作用。