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

Ant*_*ony 4 java osgi jcr aem

我试图将二进制数据(图像)保存到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);
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误

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

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

rak*_*110 5

您可以使用ValueFactory将InputStream转换为二进制值.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);
Run Code Online (Sandbox Code Playgroud)

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