Uploaded image for project: 'RESTEasy'
  1. RESTEasy
  2. RESTEASY-200

POJO Based @MultipartForm doesn't work when uploadin a file

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 1.0.2.GA
    • 1.0.1.GA
    • jaxrs
    • None

      Steps To Reproduce:

      1. Create a POJO Based Multipart form containing one or more byte arrays/InputStreams( for file upload)
      2. Create a Service accepting that form work on post method
      3. Deploy it on Jboss-5.0
      4. Make a multipart form and open it on firefox
      5. Select file and submit the form

      Observed:

      There is an exception on server stating "Unable to find @FormParam in multipart: fileData"
      This only happens if there is a file in the form, otherwise it works fine.

      Expected:

      Multipart forms should be able to accept files because in case file upload is not support there is no point of multipart form

      Problem/Work around:
      I think problem exist with the RE for content disposition header (in org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInputImpl) that group everything after name="" causing partname to be filename rather parameter name in case of file upload.

      Current RE = "form-data;.name=\"?([^\"\\s;])\"?.*"

      Can be fixed by changing RE to "form-data;.name=\"(.?)\"."

      Partial Request Dump

      POST /ContentManagement/core/token/content/uploadContent HTTP/1.1
      Host: 127.0.0.1
      User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
      Accept-Language: en-us,en;q=0.5
      Accept-Encoding: gzip,deflate
      Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
      Keep-Alive: 300
      Connection: keep-alive
      Content-Type: multipart/form-data; boundary=---------------------------54363239114604
      Content-Length: 645263
      -----------------------------54363239114604
      Content-Disposition: form-data; name="fileData"; filename="jumploader_z.jar"
      Content-Type: application/x-java-archive

      PK

      Exception on server:

      11:02:44,750 ERROR [SynchronousDispatcher] Failed executing POST /core/token/con
      tent/uploadContent
      org.jboss.resteasy.spi.LoggableFailure: Unable to find @FormParam in multipart:
      fileData
      at org.jboss.resteasy.plugins.providers.multipart.MultipartFormAnnotatio
      nReader.setFields(MultipartFormAnnotationReader.java:106)
      at org.jboss.resteasy.plugins.providers.multipart.MultipartFormAnnotatio
      nReader.readFrom(MultipartFormAnnotationReader.java:66)
      at org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBo
      dyParameterInjector.java:76)
      at org.jboss.resteasy.core.MethodInjectorImpl.injectArguments(MethodInje
      ctorImpl.java:93)
      at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.
      java:114)
      at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.
      java:260)
      at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:232
      )
      at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:166
      )
      at org.jboss.resteasy.core.DispatcherUtilities.getJaxrsResponse(Dispatch
      erUtilities.java:142)
      at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispa
      tcher.java:356)
      at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispa
      tcher.java:173)
      at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.servi
      ce(HttpServletDispatcher.java:93)
      at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.servi
      ce(HttpServletDispatcher.java:68)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
      icationFilterChain.java:290)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
      ilterChain.java:206)
      at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFi
      lter.java:96)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
      icationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
      ilterChain.java:206)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
      alve.java:235)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
      alve.java:191)
      at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(Securit
      yAssociationValve.java:190)
      at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValv
      e.java:92)
      at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.proce
      ss(SecurityContextEstablishmentValve.java:126)
      at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invok
      e(SecurityContextEstablishmentValve.java:70)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
      ava:127)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
      ava:102)
      at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedC
      onnectionValve.java:158)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
      ve.java:109)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
      a:330)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
      :828)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
      ss(Http11Protocol.java:601)
      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:44
      7)
      at java.lang.Thread.run(Thread.java:619)

            patriot1burke@gmail.com Bill Burke (Inactive)
            pakistancan_jira Muhammad Ali (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: