Hi,
Please find my code below,
Local ::
// Posts the selected file to AEM
private static void postAEM(File file, String host, String path, String mimeType) {
try {
String aemPostUrl = host + "/bin/upmanydamfiles";
System.out.println("AEM HOST :: "+ aemPostUrl);
HttpPost post = new HttpPost(aemPostUrl);
org.apache.http.entity.mime.MultipartEntity entity = new org.apache.http.entity.mime.MultipartEntity();
byte[] b = new byte[(int) file.length()];
org.apache.http.entity.mime.content.FileBody fileBody = new org.apache.http.entity.mime.content.FileBody(file, mimeType);
org.apache.http.entity.mime.content.StringBody filePath = new org.apache.http.entity.mime.content.StringBody(path);
entity.addPart("filePath", filePath);
entity.addPart("fileBody", fileBody);
post.setEntity(entity);
org.apache.http.impl.client.DefaultHttpClient client = new org.apache.http.impl.client.DefaultHttpClient();
org.apache.http.HttpResponse response = null;
System.out.println("Calling sling servlet from postAEM()..................");
response = client.execute(post);
System.out.println("Done");
} catch (Exception e) {
e.printStackTrace();
}
}
Console output :: AEM HOST :: http://dev1.company.com/bin/upmanydamfiles
Calling sling servlet from postAEM()..................
Done
Sling servlet deployed on AEM ::
@SlingServlet(paths="/bin/upmanydamfiles", methods = "POST", metatype=true)
public class HandleFile extends SlingAllMethodsServlet {
private static final long serialVersionUID = 2598426539166789515L;
private Session session;
private String clientLibPath = "";
protected final Logger log = LoggerFactory.getLogger(getClass());
private ResourceResolverFactory resolverFactory;
public HandleFile() {
}
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response)
throws ServerException, IOException {
}
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response)
throws ServerException, IOException {
try {
log.info("Inside doPost method of HandleFile...");
// boolean isMultipart =
// ServletFileUpload.isMultipartContent(request);
PrintWriter out = null;
int index = 1;
out = response.getWriter();
// if (isMultipart) {
Map<String, RequestParameter[]> params = request.getRequestParameterMap();
log.info("Params fetched from request......");
for (Map.Entry<String, RequestParameter[]> pairs : params.entrySet()) {
String k = (String) pairs.getKey();
RequestParameter[] pArr = (RequestParameter[]) pairs.getValue();
RequestParameter param0 = pArr[0];
boolean formField = param0.isFormField();
if (formField) {
String libLoc = param0.getString();
clientLibPath = libLoc;
} else {
InputStream stream = param0.getInputStream();
String mimeType = param0.getContentType();
log.info("THE CONTENT TYPE IS: " + mimeType);
log.info("Writting content to location :" + clientLibPath);
writeToClientLib(stream, param0.getFileName(), clientLibPath, mimeType);
log.info("Asset created at location:: " + clientLibPath);
}
index++;
}
// }
} catch (Exception e) {
int index;
e.printStackTrace();
}
}
private String writeToClientLib(InputStream is, String fileName, String path, String mimetype) {
try {
log.info("Inside writeToClientLib method of HandleFile......");
ResourceResolver resourceResolver = resolverFactory.getAdministrativeResourceResolver(null);
AssetManager assetMgr = (AssetManager) resourceResolver.adaptTo(AssetManager.class);
String newFile = path + fileName;
log.info("Creating asset in AEM......");
assetMgr.createAsset(newFile, is, mimetype, true);
return newFile;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
protected void bindResolverFactory(ResourceResolverFactory paramResourceResolverFactory) {
resolverFactory = paramResourceResolverFactory;
}
protected void unbindResolverFactory(ResourceResolverFactory paramResourceResolverFactory) {
if (resolverFactory == paramResourceResolverFactory) {
resolverFactory = null;
}
}
When I check in AEM content location, I am not able to find the file. I have also configured logger for bundle that is deployed on AEM but nothing found in logger.
Please guide for the same.