Hi I suggest you remove the streamCaching() and to("log:servlet") from your route. Current streamCaching doesn't support to caching the Servlet request input stream.
-- Willem Jiang Red Hat, Inc. FuseSource is now part of Red Hat Web: http://www.fusesource.com | http://www.redhat.com Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English) http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese) Twitter: willemjiang Weibo: 姜宁willem On Thursday, May 9, 2013 at 9:22 AM, crmanoj wrote: > Hi, > > I am trying to upload a file to the server from client using > multipart/form-data. The server endpoint is a camel-servlet endpoint. I am > able to get the httprequestbody from the call using (in.headers), to parse > the form data and uploaded file data i'm using commons-fileupload( streaming > api <http://commons.apache.org/proper/commons-fileupload/streaming.html> ) > library. Though the request is a multipart, I am unable to get the fileitems > from the function call. Here is the codesnippet used to get the item > (iter.hasNext() always returns false). > > HttpServletRequest request = (HttpServletRequest) > headers.get(Exchange.HTTP_SERVLET_REQUEST); > > // Check if the request is actually a multipart/form-data request. > LOG.info (http://LOG.info)("IS Mulipart: " + > ServletFileUpload.isMultipartContent(request)); > if (!ServletFileUpload.isMultipartContent(request)) > { > return "No Data found"; > } > // Create a new file upload handler > ServletFileUpload upload = new ServletFileUpload(); > FileItemIterator iter = upload.getItemIterator(request); > LOG.info (http://LOG.info)("iter has next: " + iter.hasNext()); > > My Camel route looks like below: > > from("servlet:///addContent").streamCaching() > .to("log:servlet").beanRef("sampleProcessor"); > > My camel Servlet component definition goes as below: > > <service ref="camelServlet"> > <interfaces> > <value>javax.servlet.Servlet</value> > <value>org.apache.camel.component.http.CamelServlet</value> > </interfaces> > <service-properties> > <entry key="alias" value="/camel/services" /> > <entry key="matchOnUriPrefix" value="true" /> > <entry key="servlet-name" value="CamelServlet"/> > </service-properties> > </service> > > <osgi:reference id="servletref" > interface="org.apache.camel.component.http.CamelServlet"> > <osgi:listener bind-method="register" unbind-method="unregister"> > <ref bean="httpRegistry" /> > </osgi:listener> > </osgi:reference> > > <bean id="httpRegistry" > class="org.apache.camel.component.servlet.DefaultHttpRegistry"> > </bean> > <bean id="servlet" > class="org.apache.camel.component.servlet.ServletComponent"> > <property name="httpRegistry" ref="httpRegistry" /> > </bean> > > This project is run in fuse-esb-7.1.0.fuse-047 using camel version: 2.9. > JDK: 1.6. > > Could anyone guide me to separate the form parameters and file data using > servlet endpoint? > > Thanks in Advance! > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/Using-camel-servlet-with-Multipart-unable-to-fetch-the-file-tp5732204.html > Sent from the Camel - Users mailing list archive at Nabble.com > (http://Nabble.com).