I am currently working with Spring Boot v1.3.0.BUILD-SNAPSHOT and Spring v4.2.2.BUILD-SNAPSHOT.
If I try to upload multiple files (via angular):
myService.upload = function(name ,content) { var fd = new FormData(); fd.append('name', name); fd.append('file', content); return $http({ method: 'POST', url: SERVER_BASE_URL + 'upload', data: fd, transformRequest: angular.identity, headers: { 'Content-Type': 'multipart/form-data' }}).then(function(res) { return res.headers('Location'); }, function(reason) { throw reason; }); };
I get an error message:
[WARN] org.eclipse.jetty.server.Request - java.io.IOException: Missing start border of several parts on org.eclipse.jetty.util.MultiPartInputStreamParser.parse (MultiPartInputStreamParser.java:507) ~ [jetty-util-9.2 .13.v20150730.jar: 9.2.13.v20150730] on org.eclipse.jetty.util.MultiPartInputStreamParser.getParts (MultiPartInputStreamParser.java:400) ~ [jetty-util-9.2.13.v20150730.jar: 9.2.13. v20150730] at org.eclipse.jetty.server.Request.getParts (Request.java:2139) [jetty-server-9.2.13.v20150730.jar: 9.2.13.v20150730] at org.eclipse.jetty.server.Request .extractMultipartParameters (Request.javahaps85) [jetty-server-9.2.13.v20150730.jar: 9.2.13.v20150730] at org.eclipse.jetty.server.Request.extractContentParameters (Request.java.308) [jetty- server-9.2.13.v20150730.jar: 9.2.13.v20150730] at org.eclipse.jetty.server.Request.extractParameters (Request.java:256) [jetty-server-9.2.13.v20150730.jar: 9.2. 13.v2015 0730] at org.eclipse.jetty.server.Request.getParameter (Request.java:825) [jetty-server-9.2.13.v20150730.jar: 9.2.13.v20150730] at org.springframework.web.filter.HiddenHttpMethodFilter .doFilterInternal (HiddenHttpMethodFilter.java:70) [spring -web-4.2.2.BUILD-SNAPSHOT.jar: 4.2.2.BUILD-SNAPSHOT] at org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter ) [spring -web-4.2.2.BUILD-SNAPSHOT.jar: 4.2.2.BUILD-SNAPSHOT] at org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1652) [jetty-servlet- 9.2.13.v20150730.jar: 9.2.13.v20150730] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:85) [spring -web-4.2.2.BUILD-SNAPSHOT.jar: 4.2. 2.BUILD-SNAPSHOT] at org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) [spring -web-4.2.2.BUILD-SNAPSHOT.jar: 4.2.2.BUILD-SNAPSHOT] on org .eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1652) [jetty-servlet-9.2.13.v20150730.jar: 9.2.13.v20150730] at org.eclipse.jetty.servlet.ServletHandler.doHandle (ServletHandler.ja [jetty-servlet -9.2.13.v20150730.jar: 9.2.13.v20150730] on org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:143) [jetty-server-9.2.13.v20150730.jar: 9.2 .13.v20150730] at org.eclipse.jetty.security.SecurityHandler.handle (SecurityHandler.java∗77) [jetty-security-9.2.13.v20150730.jar: 9.2.13.v20150730] at org.eclipse.jetty. server.session.SessionHandler.doHandle (SessionHandler.java:223) [jetty-server-9.2.13.v20150730.jar: 9.2.13.v20150730] at org.eclipse.jetty.server.handler.ContextHandler.doHandle (ContextHandler. java: 1127) [jetty-server-9.2.13.v20150730.jar: 9.2.13.v20150730] at org.eclipse.jetty.servlet.ServletHandler.doScope (ServletHandler.javacla1515) [jetty-servlet-9.2.13 .v20150730.jar: 9.2.13.v20150730] on org.eclipse.jetty.server.session.SessionHand ler.doScope (SessionHandler.java:185) [jetty-server-9.2.13.v20150730.jar: 9.2.13.v20150730] at org.eclipse.jetty.server.handler.ContextHandler.doScope (ContextHandler.java:1061) [jetty-server-9.2.13.v20150730.jar: 9.2.13.v20150730] at org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:141) [jetty-server-9.2.13.v20150730 .jar: 9.2.13.v20150730] on org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:97) [jetty-server-9.2.13.v20150730.jar: 9.2.13.v20150730] on org.eclipse.jetty.server.Server.handle (Server.java:499) [jetty-server-9.2.13.v20150730.jar: 9.2.13.v20150730] at org.eclipse.jetty.server.HttpChannel.handle ( HttpChannel.javahaps10) [jetty-server-9.2.13.v20150730.jar: 9.2.13.v20150730] at org.eclipse.jetty.server.HttpConnection.onFillable (HttpConnection.java:257) [jetty-server-9.2 .13.v20150730.jar: 9.2.13.v20150730] at org.eclipse.jetty.io.AbstractConnection $ 2.run (AbstractConnection.java∗40) [jetty-io-9 .2.13.v20150730.jar: 9.2.13.v20150730] on org.eclipse.jetty.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:635) [jetty-util-9.2.13.v20150730.jar: 9.2.13 .v20150730] at org.eclipse.jetty.util.thread.QueuedThreadPool $ 3.run (QueuedThreadPool.java► 555) [jetty-util-9.2.13.v20150730.jar: 9.2.13.30] 1507 on java.lang.Thread. run (Thread.java:745) [na: 1.8.0_45]
I added a multi-threaded bean converter:
@Bean public FilterRegistrationBean openEntityManagerFilterRegistrationBean() { // Set upload filter final MultipartFilter multipartFilter = new MultipartFilter(); final FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(multipartFilter); filterRegistrationBean.addInitParameter("multipartResolverBeanName", "commonsMultipartResolver"); return filterRegistrationBean; } @Bean public CommonsMultipartResolver commonsMultipartResolver() { final CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(); commonsMultipartResolver.setMaxUploadSize(-1); return commonsMultipartResolver; }
However, it seems like the hiddenHttpMethodFilter is still being called before my multi-part converter:
[DEBUG] org.eclipse.jetty.servlet.ServletHandler - call filter symbolEncodingFilter [DEBUG] org.eclipse.jetty.servlet.ServletHandler - call filter hiddenHttpMethodFilter [WARN] org.eclipse.jetty.util.MultiParsInput multipleStream request
I tried adding @Order (0) to my Bean, but that didn’t affect it.
What else am I missing?
source share