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("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("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.

Reply via email to