InputStream object to read from DAM Asset | Community
Skip to main content
New Participant
October 16, 2015
Solved

InputStream object to read from DAM Asset

  • October 16, 2015
  • 1 reply
  • 4189 views

Hi,

I want to fetch DAM asset from JCR and obtain inputstream for a node or for an asset so that I can read that asset. I have implemented below code.

querybuilder = resource.getResourceResolver().adaptTo(QueryBuilder.class);
Query query = querybuilder.createQuery(PredicateGroup.create(map), session);
SearchResult result = query.getResult();

for (Hit ht : result.getHits()) {            

            try {
                path = hit.getPath();
            } catch (RepositoryException e) {
                e.printStackTrace();
            }
            Resource assetResource = resourceResolver.getResource(path);
            Asset asset = assetResource.adaptTo(Asset.class);

}

I am able to fetch Asset object but I am not able to get InputStream out of that. 

I dont want to use deprecated method as follows jcrContent.getProperty("jcr:data").getStream(); 

Can anyone please guide me how I can obtain InputStream object for an Asset?  Or please share some code snippet for fetching image(DAM Asset) from JCR and reading the same using inputstream.

 

Thanks,

Manju

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 JustinEd3

Hi Manju,

Try this:

querybuilder = resource.getResourceResolver().adaptTo(QueryBuilder.class); Query query = querybuilder.createQuery(PredicateGroup.create(map), session); SearchResult result = query.getResult(); for (Hit ht : result.getHits()) { try { Resource assetResource = hit.getResource(); Asset asset = assetResource.adaptTo(Asset.class); // you probably need a null check here... Rendition original = asset.getOriginal(); if (original != null) { // it is rare, but some assets might not have an original rendition InputStream stream = original.getStream(); // do something with the stream } } catch (Exception e) { e.printStackTrace(); } }

An Asset doesn't have an InputStream per se. You need to use one of the renditions.

HTH,

Justin

1 reply

JustinEd3Accepted solution
Employee
October 16, 2015

Hi Manju,

Try this:

querybuilder = resource.getResourceResolver().adaptTo(QueryBuilder.class); Query query = querybuilder.createQuery(PredicateGroup.create(map), session); SearchResult result = query.getResult(); for (Hit ht : result.getHits()) { try { Resource assetResource = hit.getResource(); Asset asset = assetResource.adaptTo(Asset.class); // you probably need a null check here... Rendition original = asset.getOriginal(); if (original != null) { // it is rare, but some assets might not have an original rendition InputStream stream = original.getStream(); // do something with the stream } } catch (Exception e) { e.printStackTrace(); } }

An Asset doesn't have an InputStream per se. You need to use one of the renditions.

HTH,

Justin