其他分享
首页 > 其他分享> > 如何将byte []转换为Binary以设置jcr:包含文件内容的数据?

如何将byte []转换为Binary以设置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);

但是,我收到一个错误

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

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

解决方法:

您可以使用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.

标签:java,osgi,aem,jcr
来源: https://codeday.me/bug/20190609/1203635.html