我们可以删除大坝上传的文件吗?

时间:2017-03-15 15:06:52

标签: adobe cq5 aem

我需要以编程方式从DAM Asset中删除上传的文件。我们可以从DAM中删除特定的文件节点吗?

路径: - /content/dam/nextgen/Ehub-POD/....

在Ehub-POD内部,我正在创建一个文件夹并上传文件。在jsp页面中,我将选择特定文件,并且需要从大坝以及jsp中删除文件。

2 个答案:

答案 0 :(得分:0)

让我们想象一下,我们在大坝中有以下形象:

/content/dam/nextgen/Ehub-POD/image1.jpg

要删除它,请使用jcr Session

session.removeItem("/content/dam/nextgen/Ehub-POD/image1.jpg")
if (session.hasPendingChanges()) {
    session.save();        
}

来自dam的图片将被删除,现在您需要运行查询以找出图片的使用位置并删除fileReference属性:

Workspace workspace = session.getWorkspace();
QueryManager qm = workspace.getQueryManager();
Query query = qm.createQuery("/jcr:root/content/websitename/*[@fileReference='/content/dam/nextgen/Ehub-POD/image1.jpg']", Query.XPATH);
QueryResult queryResult = query.execute();
result = queryResult.getNodes();
while (result.hasNext()) {
    Node node = result.nextNode();
    node.getProperty("fileReference").remove();
}

或者您可以删除有关图像的所有信息  节点存储有关裁剪,fileReference等的信息:

while (result.hasNext()) {
    Node node = result.nextNode();
    node.remove();
}

并且不要忘记保存存储库更改

if (session.hasPendingChanges()) {
    session.save();        
}

答案 1 :(得分:0)

通过CURL完成另一种方法:

您可以对图像路径执行CURL DELETE请求以将其删除。此外,您可以使用CURL通过以下命令找到对图像的所有引用:

http://localhost:4502/bin/wcm/references.json?path=/content/dam/nextgen/Ehub-POD/test-image.png
  

这将为您提供使用此图像的所有位置的引用(CSS或JS除外)。