如何将 byte[] 转换为 Binary 以使用文件内容设置 jcr:data?

How to convert byte[] to Binary to set jcr:data with file contents?

我正在尝试将二进制数据(图像)保存到 JCR 节点中。我正在使用以下方法从印象笔记中获取图像:public byte[] getBody() and then trying to set property jcr:data with the contents of the file using setProperty(string, Binary)

我就是这样做的:

Node n; 
byte [] fileContent = resrouce.getData().getBody();
....
n.setProperty("jcr:mimeType", "image/png");
n.setProperty("jcr:data", fileContent);

但是,我得到一个错误

no suitable method found for setProperty(java.lang.String,byte[])

用二进制文件内容设置 jcr:data 属性 的方法是什么?

您可以使用 ValueFactory to convert the InputStream to a Binary 值。 ValueFactory 可以从 Session 对象中获取。

ValueFactory factory = session.getValueFactory();
InputStream is = new ByteArrayInputStream(fileContent);

Binary binary = factory.createBinary(is);
Value value = factory.createValue(binary);
n.setProperty("jcr:data", value);

要了解有关写入存储库的更多信息,请参阅此 specification