java - AEM asset 有没有办法通过在java工作流中创建文件夹来移动文件

标签 java aem

我想通过仅使用 java 中的工作流程创建一个新文件夹来移动少量 Assets 。我不想手动创建文件夹然后移动 Assets ,因为有 10000 个 Assets 需要移动到不同的文件夹。

最佳答案

如果您正在考虑使用工作流程创建文件夹 - AEM 中的文件夹只不过是 jcr:primaryType 的节点,可以是 sling:Foldersling:有序文件夹。如果您的类路径中有 com.day.cq.commons.jcr,则 createPath method如果节点不存在,将帮助您创建节点。

您还可以使用 addNode方法,然后使用 javax.jcr.Node api 的 setProperty 方法来创建此适当主要类型的文件夹。

将资源移动到这个新创建的节点(文件夹),之后就可以继续了。您可以使用克隆 method来自javax.jcr.WorkSpace,它有一个删除现有节点的选项。

<小时/>

还有另一种直接的方式来转移 Assets 。 我建议您使用内置的 com.adobe.granite.asset.api.AssetManager api对 DAM Assets 执行 CRUD 操作。

session = resourceResolver.adaptTo(Session.class);  
String assetPath = "/content/dam/folderA/asset1.jpg";
String movePath = "/content/dam/folderB/asset1.jpg";
assetManager.moveAsset(assetPath, copyPath);

session.save()
session.logout()

AssetManager API 的更多引用。

HelpX Article

API Details

如果没有适当的索引,移动大量 Assets 可能会导致移动操作失败。监视日志中是否有警告消息,例如查询读取或遍历了超过 X 个节点。。您可能需要将基于 Oak 的属性添加到开箱即用的 /oak:index/ntBaseLucene 索引中才能解决此问题。

更多详情here .

关于java - AEM asset 有没有办法通过在java工作流中创建文件夹来移动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51964751/

相关文章:

maven - 传递依赖 : Using Elasticsearch Rest High Client problem in AEM

java - 如何使用 Comparable 接口(interface)对不同对象类型的数组列表进行排序

java - 关于ArrayList的问题

java - 无法从 Maven 存储库下载 CQ DAM API JAR?

aem - 请求 http ://localhost:4502/crx/packmgr/service. jsp 失败,response=Forbidden

java - AEM、Maven : Moving Service from one bundle to another bundle breaks the service wiring

java - Splitwise API登录问题

java - Hibernate和java堆空间错误

Java TextField getText() 返回先前的字符串值

java - Ajax : Not able to redirect to a content page inside AEM SLING servlet