繁体   English   中英

如何在 jxbrowser 中将字节数组 (byte[]) 从 java 传递到 javascript

[英]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);

Javascript:

    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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM