[英]How to pass a byte array (byte[]) from java to javascript in jxbrowser
有谁知道是否以及如何在 jxbrowser 中将字节 [] 从 java 传递到 javascript?
(目标是在浏览器中打开一个二进制文件而不弹出文件选择器对话框)。
当我尝试本地传递 byte[] 时:
JsFunction function = frame.executeJavaScript("openFileContent");
byte[] blob = new byte[3];
blob[0] = 10;
blob[1] = 20;
blob[2] = 30;
return function.invoke(instance, blob);
openFileContent = function(fileContent) {
console.log(fileContent);
console.log(fileContent[0]);
在 javascript 方面,我得到:
[object [B]
undefined
所以它看起来并没有被编组成任何可用的东西。
我的另一种方法是将 blob 包装到 POJO 中,例如:
public static class JsBlob {
private byte[] buffer;
public JsBlob(byte[] buffer) {
this.buffer = buffer;
}
@JsAccessible
public byte get(int index) {
return buffer[index];
}
@JsAccessible
public byte[] getBuffer() {
return buffer;
}
@JsAccessible
public int getLength() {
return buffer.length;
}
}
由于在逐字节获取实际数组内容时进行了所有进程间调用,因此在工作时非常慢。
我目前的回退是在字符串中传输 base64 编码的 blob,它确实被正确编组为字符串,然后在 js 端对其进行解码,但如果可能的话,我想尽可能避免这种不必要的处理。
对 JavaScript 数组的支持在产品路线图上: https : //jxbrowser-support.teamdev.com/roadmap/
因此,下一版本将支持此功能。 您可以在 Twitter 上关注 JxBrowser 以了解此功能何时发布: https ://twitter.com/JxBrowserTeam
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.