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
Solved! Go to Solution.
Views
Replies
Total Likes
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
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