带有Jersey Multipart文件上传的Spring Boot无效

时间:2017-08-22 00:28:48

标签: spring spring-mvc spring-boot jersey multipartform-data

我在我的应用程序中使用Spring Boot Jersey并尝试使用REST上传Multipart文件,但每当我进行API调用时,它总是给出以下异常。

Caused by: java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided
at 
org.apache.catalina.connector.Request.parseParts(Request.java:2669)
at org.apache.catalina.connector.Request.getParts(Request.java:2636)
at org.apache.catalina.connector.RequestFacade.getParts(RequestFacade.java:1083)
at javax.servlet.http.HttpServletRequestWrapper.getParts(HttpServletRequestWrapper.java:347)
at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:85)
... 32 common frames omitted

我尝试了所有不同的东西,例如在application.properties中设置属性,还创建了config bean。请参阅下文。 如果有人能帮助我解决这个问题,我真的很感激。

方法1。

spring.http.multipart.enabled=true
spring.http.multipart.max-file-size=1MB
spring.http.multipart.max-request-size=10MB
spring.http.multipart.resolve-lazily=false

方法2。

@Configuration
public class MultiPartConfig {

  @Bean
  public MultipartConfigElement multipartConfigElement() {
    MultipartConfigFactory factory = new MultipartConfigFactory();
    factory.setMaxFileSize(1024L);
    return factory.createMultipartConfig();
  }
}

我的API端点。

@POST
@Path("/picture")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response loadFile(@FormDataParam("file") InputStream file,
                         @FormDataParam("file") FormDataContentDisposition fileDisposition,
                         @Context HttpServletRequest request) {

1 个答案:

答案 0 :(得分:1)

我认为您可能需要将MultipartFeaure添加到您的配置中。

@Configuration
public class JerseyConfiguration extends ResourceConfig {

  public JerseyConfiguration(){
    register(MultiPartFeature.class);

  }
}