我正在尝试为名称(例如A.gif)的图像创建单个文件节点。现在,我想在多个节点上重用该文件。有没有办法做到这一点? 作为一种解决方法,我正在为我的存储库中的不同路径重新创建文件节点,但这会导致文件重复。
答案 0 :(得分:1)
如果你使用长耳兔,如果DataStore处于活动状态,复制文件节点(或者更确切地说是复制二进制属性)会很便宜。
该组件确保“大”二进制属性(具有可配置的大小阈值IIRC)仅基于其内容的摘要存储一次。
因此,在这种情况下,您可以多次复制相同的文件节点,而不必担心磁盘空间。
答案 1 :(得分:0)
我不确定我理解你的问题。但是,我要做的是将文件存储在一个位置,然后使用多个位置的path
属性引用它。
假设您有以下节点结构
-content
- articles
- article1
- article2
- images
- image1
您可以在每篇文章上设置一个名为imagePath
的属性,该属性指向要显示的图像的路径,在本例中为/content/images/image1
。
答案 2 :(得分:0)
为了完整起见,请不要忘记references。
Node imageNode = rootNode.addNode("imageNode");
imageNode.addMixin(JcrConstants.MIX_REFERENCEABLE);
Node node1 = rootNode.addNode("1");
node1.setProperty("image", imageNode);
Node node2 = rootNode.addNode("2");
node2.setProperty("image", imageNode);
session.save();
PropertyIterator references = imageNode.getReferences();
while (references.hasNext()) {
Property reference = references.nextProperty();
System.out.println(reference.getPath());
}
答案 3 :(得分:0)
nt:linkedFile类型仅用于此类用途。