Retrieving File Attachments from adobe adaptive form | Community
Skip to main content
This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by workflowuser

This is an easier and recommended way to get hold of the AF attachments on form submission. Please follow the steps mentioned below

Down load the sample bundle and deploy it using web console in AEM

Import the Sample Package using package manager. This package has the  custom submit 

Import the Sample Adaptive Form using the package manager. This adaptive form is configured to submit to the custom submit handler called

"handleafsubmission"

Preview the Test Attachments form . Add a couple of attachments and submit

The attachments will be written to the folder of your AEM installation

I have deleted my earlier response since this is the recommended approach

7 replies

kautuk_sahni
Community Manager
Community Manager
May 12, 2020

@vish.dhaliwal @arunpatidar  Any pointers here?

 

Kautuk Sahni
June 25, 2020

You want to access attachments after the form is submitted?

are you using AEM workflow?

mohamedn4455443
June 25, 2020
No adaptive form and form portal(osgi)
Adobe Employee
June 25, 2020

When you add attachments to AF they are stored in tmp location. Every time an attachment is added to AF you can use the event handler to get the location of the file and write that location to the hidden field in your AF. When you form is submitted your servlet can extract the attachments from that location and do the needful

I am attaching a simple form with a custom client lib. Preview the form and add attachments.You should see the text field populated with the path to the attachments

https://documentcloud.adobe.com/link/track?uri=urn:aaid:scds:US:54646349-ac33-4d87-8813-95861ce78bfc

 

import the two packages using package manager

then preview the TestAttachments form

add a couple of attachments

you should see the path of the attachments written to the text box

 

mohamedn4455443
June 25, 2020
then i can pass (attachment) to maven method ? *
Adobe Employee
June 26, 2020

the original answer has been removed. Please follow the steps mentioned elsewhere in this post

mohamedn4455443
June 26, 2020
This is very good. It works fine and I can get the file name and attachment path in the stdout file, Can you share the handleafsubmission.handleafsubmission maven project with me please?
June 26, 2020

You can decompile using any java decompiler online 

there is interface and servlet that makes up the code

mohamedn4455443
June 26, 2020
I already did, but some files didn't find such as comergeandfusem.mergeandfuse.getservice userresolver.get resolver.jar
Adobe Employee
June 28, 2020

package com.aemforms.handleafsubmission.core.servlets;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;

import javax.servlet.Servlet;
import javax.servlet.ServletException;

import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.request.RequestParameter;
import org.apache.sling.api.request.RequestParameterMap;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.adobe.aemfd.docmanager.Document;
@8220494(service = {
Servlet.class
}, property = {
"sling.servlet.methods=get",
"sling.servlet.methods=post",
"sling.servlet.paths=/bin/getsubmitteddata"
})

public class GetSubmittedData extends SlingAllMethodsServlet {


Logger logger = LoggerFactory.getLogger(GetSubmittedData.class);


private static final long serialVersionUID = -8884406699033680092 L;
protected void doPost(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws ServletException {
// get the submitted form data
String submittedData = request.getParameter("jcr:data");
logger.debug(submittedData);
RequestParameterMap requestParameterMap = request.getRequestParameterMap();
for (Map.Entry < String, RequestParameter[] > pairs: requestParameterMap.entrySet()) {
final org.apache.sling.api.request.RequestParameter[] pArr = pairs.getValue();
final org.apache.sling.api.request.RequestParameter param = pArr[0];
if (!param.isFormField()) {
try {
logger.debug("Got attachment!!!!" + param.getFileName());
InputStream is = param.getInputStream();
Document attachment = new Document(is);
attachment.copyToFile(new File(param.getFileName().split("/")[1]));
attachment.close();
} catch (IOException e) {
logger.debug(e.getMessage());
}
}

}


}

}

workflowuserAdobe EmployeeAccepted solution
Adobe Employee
June 28, 2020

This is an easier and recommended way to get hold of the AF attachments on form submission. Please follow the steps mentioned below

Down load the sample bundle and deploy it using web console in AEM

Import the Sample Package using package manager. This package has the  custom submit 

Import the Sample Adaptive Form using the package manager. This adaptive form is configured to submit to the custom submit handler called

"handleafsubmission"

Preview the Test Attachments form . Add a couple of attachments and submit

The attachments will be written to the folder of your AEM installation

I have deleted my earlier response since this is the recommended approach

mohamedn4455443
June 29, 2020
Thanks for your great support