如何将byte []转换为Binary来设置jcr:带文件内容的数据?

时间:2015-08-10 17:26:57

标签: java osgi aem jcr

我正在尝试将二进制数据(图像)保存到JCR节点中。我从evernote获取图片注意使用此方法:public byte[] getBody()然后尝试使用setProperty(string, Binary)

设置属性jcr:data和文件内容

这就是我这样做的方式:

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

但是,我收到错误

  

找不到合适的setProperty方法(java.lang.String,byte [])

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

1 个答案:

答案 0 :(得分:5)

您可以使用ValueFactory将InputStream转换为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