Not able to create a asset using the asset manager. | Community
Skip to main content
Level 2
Dec 5, 2017 7:56 AM UTC
Solved

Not able to create a asset using the asset manager.

Hi,

I am trying to create an Image asset in the DAM of my project. The code is working fine without any errors but I am not getting any image in the repository.

package Day7.core.servlets;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.PrintWriter;

import java.util.Map;

import java.util.Map.Entry;

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.resource.LoginException;

import org.apache.sling.api.resource.ResourceResolver;

import org.apache.sling.api.resource.ResourceResolverFactory;

import org.apache.sling.api.servlets.HttpConstants;

import org.apache.sling.api.servlets.SlingAllMethodsServlet;

import org.osgi.framework.Constants;

import org.osgi.service.component.annotations.Component;

import org.osgi.service.component.annotations.Reference;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import com.day.cq.dam.api.AssetManager;

@Component (service = Servlet.class,

property = {

Constants.SERVICE_DESCRIPTION + "=Asset Upload",

"sling.servlet.methods=" + HttpConstants.METHOD_GET,

"sling.servlet.paths=" + "/bin/day7/assetUpload",

"sling.servlet.extensions=" + "html"

})

public class AssetUpload extends SlingAllMethodsServlet{

private static final long serialVersionUID = 1L;

private static final Logger logger = LoggerFactory.getLogger(AssetUpload.class);

@Reference

private ResourceResolverFactory resolverFactory;

@Override

protected void doGet(final SlingHttpServletRequest request,

            final SlingHttpServletResponse response) throws ServletException, IOException {

ResourceResolver resourceResolver;

PrintWriter out = null;

out = response.getWriter();

try {

resourceResolver = resolverFactory.getResourceResolver(null);

AssetManager assetManager = resourceResolver.adaptTo(AssetManager.class);

FileInputStream is = new FileInputStream("C:\\Users\\rohit.w\\Downloads\\1650.JPG");

String copyPath = "/content/dam/Day7";

assetManager.createAsset(copyPath, is, "image/jpeg", true);

out.println("Asset Created new");

} catch (LoginException le) {

logger.error("LoginException", le);

}

}

}

Can please somebody help me out on this as to why my image is not being saved in the repository.

Thanks in advance.

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
rohit_wAccepted solution
Level 2
Dec 5, 2017 10:21 AM UTC

Seems I was taking the resource resolver reference wrong. The correct way is:

ResourceResolver resourceResolver = request.getResourceResolver();

5 replies

New Participant
Jun 26, 2018 11:56 PM UTC

Hi Rohit,

Thanks for your post. This is very helpful to me.

I am looking for a way to upload assets to AEM DAM as a batch upload. Once uploaded the assets, I need to get the metadata of the uploaded assets from DAM.

I am trying to understand:

- how the authentication works in the AssetManager call. I mean, how to pass the credential once extended the AssetManager interface.

- how to get the metadata of the published assets

Could you please shed some light?

Thanks.

Translate
rohit_wAuthor
Level 2
Dec 5, 2017 10:22 AM UTC

I was following this doc only.

Translate
rohit_wAuthorAccepted solution
Level 2
Dec 5, 2017 10:21 AM UTC

Seems I was taking the resource resolver reference wrong. The correct way is:

ResourceResolver resourceResolver = request.getResourceResolver();

Translate
kautuk_sahni
Employee
Dec 5, 2017 10:08 AM UTC

I will recommend you to follow this docs: Adobe Experience Manager Help | Uploading files to Adobe Experience Manager DAM using AssetManager API

If you still faces the problem then it would be great to share the error that you are getting.

Translate
Kautuk Sahni
edubey
Level 10
Dec 5, 2017 9:20 AM UTC

Seems like you are missing two things:

1. resolverFactory.getResourceResolver(null); won't give you proper permissions[0]. Create a service user and then use it [1]

[0] https://sling.apache.org/apidocs/sling7/org/apache/sling/api/resource/ResourceResolverFactory.html#getResourceResolver-java.util.Map-

[1] https://helpx.adobe.com/experience-manager/6-3/sites/administering/using/security-service-users.html

2. resourceResolver.commit() to save changes [2]

[2] https://sling.apache.org/apidocs/sling7/org/apache/sling/api/resource/ResourceResolver.html#commit--

Translate