gpt4 book ai didi

java - 从 JCR 存储库访问资源数据

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:40:07 29 4
gpt4 key购买 nike

使用 sling 资源接口(interface),我试图访问保存为 binary property 的数据到我的 JCR 节点。目前我正在通过以下方式进行操作,这会返回一个空值。

Resource dataResource = resourceResolver.getResource("/testNode/A/test.txt");
ValueMap properties = dataResource.adaptTo(ValueMap.class);

String expected = properties.get("jcr:data").toString(); // null
InputStream content = (InputStream) actualProp.get("jcr:data"); // null

任何人都可以让我知道缺少什么,或者读取 jcr:data 属性的最佳方法是什么,它以二进制数据的形式存在。 dataResource 是一个nt:unstructured

它显示的输出是:-org.apache.sling.jcr.resource.internal.helper.LazyInputStream@4f4c8085

最佳答案

您提到您使用的是 Sling 资源 API 而不是 JCR API。您可以直接从 Resource 将资源调整为 InputStream,如下所示:

Resource dataResource = resourceResolver.getResource("/testNode/A/test.txt/jcr:content");
InputStream is = dataResource.adaptTo(InputStream.class);

只要资源是 nt:file 或 nt:resource,jcr:data 属性的内容就应该作为 InputStream 返回。

从那里您可以按照 Tuan 在他的回答中建议的那样从 InputStream 中读取。

您可以从以下单元测试中看到此功能的示例: http://svn.apache.org/repos/asf/sling/whiteboard/fmeschbe/resource/jcr.resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrNodeResourceTest.java

关于java - 从 JCR 存储库访问资源数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16932789/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com