How to move an asset in an application code

Environment

AEM Assets 6.0, 6.1, 6.2, 6.3

Steps

Assets cannot be moved properly using the JCR Session.move API.  Instead you must use the PageManager.move API.

For example:

PageManager pageManager = ((PageManager)resourceResolver.adaptTo(PageManager.class));
Resource sourceResource = resourceResolver.getResource("/content/dam/example.jpg");
String destinationPath = "/content/dam/test/example.jpg";
pageManager.move(sourceResource, destinationPath, null, false, true, null, null);

Unfortunately, that method call doesn't fully include everything that is done by the com.day.cq.wcm.core.impl.commands. AbstractCopyMoveCommand class which handles the request from the UI. To fully simulate the UI, you would have to internally fire off this request using the SlingRequestProcessor.

See this article for details on how to internally fire off such a request:
http://www.nateyolles.com/blog/2015/10/get-rendered-html-for-an-aem-resource-or-component

The request would be:

POST /bin/wcmcommand

with these POST parameters:

cmd=movePage
integrity=true
_charset=utf-8
destParentPath=/content/dam
destName=test1.png
srcPath=/content/dam/test.png

 Adobe

Получете помощ по-бързо и по-лесно

Нов потребител?

Adobe MAX 2024

Adobe MAX
Конференцията, посветена на креативността

14 – 16 октомври, Маями Бийч и онлайн

Adobe MAX

Конференцията, посветена на креативността

14 – 16 октомври, Маями Бийч и онлайн

Adobe MAX 2024

Adobe MAX
Конференцията, посветена на креативността

14 – 16 октомври, Маями Бийч и онлайн

Adobe MAX

Конференцията, посветена на креативността

14 – 16 октомври, Маями Бийч и онлайн