Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn More

View all

Sign in to view all badges

How to update asset programatically in AEM Assets?

Avatar

Avatar
Validate 1
Level 1
arunaaems506124
Level 1

Like

1 like

Total Posts

25 posts

Correct Reply

0 solutions
Top badges earned
Validate 1
Ignite 1
Give Back
Boost 1
Applaud 5
View profile

Avatar
Validate 1
Level 1
arunaaems506124
Level 1

Like

1 like

Total Posts

25 posts

Correct Reply

0 solutions
Top badges earned
Validate 1
Ignite 1
Give Back
Boost 1
Applaud 5
View profile
arunaaems506124
Level 1

01-07-2020

Hi All,

 

I am using createAsset Api to create asset in asset server.If I want to  update asset content (I am uplaoding pdfs) file is not updating. How to achieve file update with assetmanager API.

 

Any help much appreaciated.

 

AssetManager manager = resourceResolver.adaptTo(AssetManager.class);
Asset createAsset(String path,
                InputStream is,
                String mimeType,
                boolean doSave)

 

Thanks!

 

Accepted Solutions (1)

Accepted Solutions (1)

Avatar

Avatar
Validate 1
MVP
Albin_Issac
MVP

Likes

106 likes

Total Posts

119 posts

Correct Reply

33 solutions
Top badges earned
Validate 1
Ignite 1
Give Back 5
Give Back 3
Give Back 10
View profile

Avatar
Validate 1
MVP
Albin_Issac
MVP

Likes

106 likes

Total Posts

119 posts

Correct Reply

33 solutions
Top badges earned
Validate 1
Ignite 1
Give Back 5
Give Back 3
Give Back 10
View profile
Albin_Issac
MVP

01-07-2020

You can also use the ASSETS HTTP API directly to update the asset meta data

e.g 

URL - http://localhost:4502/api/assets/test/test-api.pdf   (test is the parent folder under /content/dam)

Method - PUT

Content-Type - application/json

Sample Payload - {"properties":{"metadata":{"jcr:description":"test3","jcr:title":"test 2"}}}

Add the Basic authentication details 

Reference - https://docs.adobe.com/content/help/en/experience-manager-65/assets/extending/mac-api-assets.html

 

Sample request through postman

 

aem-assets-http-api.png

 

aem-assets-http-api.png

aem-assets-http-api.png

Regards

Albin I

www.albinsblog.com

Answers (4)

Answers (4)

Avatar

Avatar
Establish
MVP
Veena_Vikram
MVP

Likes

471 likes

Total Posts

1,039 posts

Correct Reply

121 solutions
Top badges earned
Establish
Coach
Contributor 2
Seeker
Ignite 5
View profile

Avatar
Establish
MVP
Veena_Vikram
MVP

Likes

471 likes

Total Posts

1,039 posts

Correct Reply

121 solutions
Top badges earned
Establish
Coach
Contributor 2
Seeker
Ignite 5
View profile
Veena_Vikram
MVP

01-07-2020

@arunaaems506124 There is no separate method for updating an asset, it is basically the same createAsset Method which you use to update the existing asset. If you read the java docs more clearly you can read the below

 

createAsset

Asset createAsset(String path,
                InputStream is,
                String mimeType,
                boolean doSave)
Creates a new Asset at the given path. If an asset already exists at the given path, its original rendition is updated instead of creating a new asset. If inputStream is null new Asset is created without original rendition. If an asset already exists at given path and inputstream is null, original rendition is not updated.
 
 
Said that, for a sample code, please take a look at the codebase @raj_mandalapu  mentioned, but check line 346 , you can clearly see that line actually updates an existing asset.

 

 

 

 

//if skip then we only create asset if it doesn't exist
                if (r.getResource(assetPath) == null) {
                    createAsset(source, assetPath, r, false);
                } 

 

 

 

 

Hope this helps

Veena ✌

Avatar

Avatar
Validate 1
MVP
raj_mandalapu
MVP

Likes

124 likes

Total Posts

203 posts

Correct Reply

72 solutions
Top badges earned
Validate 1
Contributor
Shape 1
Give Back 5
Give Back 3
View profile

Avatar
Validate 1
MVP
raj_mandalapu
MVP

Likes

124 likes

Total Posts

203 posts

Correct Reply

72 solutions
Top badges earned
Validate 1
Contributor
Shape 1
Give Back 5
Give Back 3
View profile
raj_mandalapu
MVP

01-07-2020

The below article gives you clear information on how to create Asset and updating the Asset.

https://github.com/Adobe-Consulting-Services/acs-aem-commons/blob/master/bundle/src/main/java/com/ad...

In the above github codebase, check "saveMigrationInfo" method to update asset

 

Avatar

Avatar
Give Back 5
Employee
sunjot16
Employee

Likes

105 likes

Total Posts

164 posts

Correct Reply

50 solutions
Top badges earned
Give Back 5
Give Back 3
Give Back 25
Give Back 10
Give Back
View profile

Avatar
Give Back 5
Employee
sunjot16
Employee

Likes

105 likes

Total Posts

164 posts

Correct Reply

50 solutions
Top badges earned
Give Back 5
Give Back 3
Give Back 25
Give Back 10
Give Back
View profile
sunjot16
Employee

03-07-2020

You can use the Asset Interface to achieve the same.

     // to create an asset
     AssetManager assetManager = resolver.adaptTo(AssetManager.class);
     Asset newAsset = assetManager.createAsset("/path/to/asset/document.pdf");

The following docs may be helpful:

https://helpx.adobe.com/experience-manager/6-4/sites/developing/using/reference-materials/javadoc/co...

https://helpx.adobe.com/experience-manager/6-4/sites/developing/using/reference-materials/javadoc/co...

 

The latter one states: 

Creates a new Asset at the given path. If an asset already exists at the given path, its original rendition is updated instead of creating a new asset. If inputStream is null new Asset is created without original rendition. If an asset already exists at given path and inputstream is null, original rendition is not updated.

 

I think that your Input Stream is null, due to which the original rendition is not getting updated.

Input Stream is the input stream of the new asset's original binary.

 

You can also achieve the same using Assets HTTP API, as follows:

https://docs.adobe.com/content/help/en/experience-manager-65/assets/extending/mac-api-assets.html#cr...

https://docs.adobe.com/content/help/en/experience-manager-65/assets/extending/mac-api-assets.html#up...

 

Hope these help !!

Avatar

Avatar
Establish
MVP
Nupur_Jain
MVP

Likes

165 likes

Total Posts

186 posts

Correct Reply

76 solutions
Top badges earned
Establish
Ignite 1
Give Back 5
Give Back 3
Give Back 25
View profile

Avatar
Establish
MVP
Nupur_Jain
MVP

Likes

165 likes

Total Posts

186 posts

Correct Reply

76 solutions
Top badges earned
Establish
Ignite 1
Give Back 5
Give Back 3
Give Back 25
View profile
Nupur_Jain
MVP

01-07-2020

Hi @arunaaems506124 

 

If I am able to understand correctly, you want to replace the existing PDF file with new PDF file OR you want to update metadata like tags, title etc?

 

Thanks,

Nupur