Expand my Community achievements bar.

Using request.getParts() in AEM servlet to get multiple files sent via an AJAX POST

Avatar

Level 6

Hi,

I am trying to read multiple files as attachments sent by a POST to my AEM servlet. I need to read each file and then pass them on to a call to AWS Api Gateway.

Looking at the API documentation https://docs.adobe.com/docs/en/aem/6-0/develop/ref/javadoc/org/apache/sling/api/SlingHttpServletRequ... it says it inherits method getParts() from javax.servlet.http.HttpServletRequest.

In http://docs.oracle.com/javaee/6/tutorial/doc/gmhba.html it says I can use something like

Collection<Part> parts = request.getParts("file");

However in Eclipse runing my project on Maven Aem archetype 10, I cannot access Part unless I use
Collection<javax.servlet.http.Part> parts but the SlingHttpServletRequest object does not have access to getParts();

Am I approaching this incorrectly in AEM?

I have been working with AEM for 2 years now, but I have never had to read Multiple attachments before.

Regards

Clive Stewart

3 Replies

Avatar

Level 3

Hi Clive,

Any luck on this one..Even I have same requirement,

 

Thanks,

Sai

Avatar

Level 9

Hi Clive,

Since SlingHttpServletRequest inherts HttpServletRequest you can use getParts().  Are you getting any error Or method not found?

Thanks,

Avatar

Level 1

I think the problem is the Servlet API version.   The oracle doc starts "Servlet 3.0 supports".  I think the interface that is being pulled in is an earlier version of the Servlet API.  I don't know if the AEM uber jar has Servlet 3.x apis.

The Adobe repo does not have Servlet API 3.0 . Here is the list from the repo (as of today):

```

<metadata modelVersion="1.1.0">

  <groupId>javax.servlet</groupId>

  <artifactId>servlet-api</artifactId>

  <versioning>

   <latest>2.5</latest>

   <release>2.5</release>

   <versions>

   <version>2.3</version>

   <version>2.4</version>

   <version>2.5</version>

   </versions>

   <lastUpdated>20130711152914</lastUpdated>

  </versioning>

</metadata>

```