3

我最近在做一个项目,需要将二进制流从 npapi 插件传递到 javascript,我尝试了以下方法:

  1. 使用 NPN_InvokeDefault,我创建了一个存储二进制流的字符串变体,并将其调用到 javascript,它失败了。(我试图传递从 XXX.txt 文件中读取的二进制流,它有效!)

  2. 我尝试使用 NPN_NewStream,http: //www.terraluna.org/dgp/cvsweb/PluginSDK/Documentation/pi3.htm#npnnewstream 中列出的示例可以 工作,但是图片是在新的浏览器选项卡中加载的,我没有知道如何在 javascript 中接收它。

有没有人遇到过类似的问题?或者也许 npapi 不能支持这种数据传输?

期待您的建议,非常感谢。

4

1 回答 1

5

不幸的是,NPAPI 的设计从来没有考虑到这个目的。有几种方法可以做到这一点,但没有一个是真正理想的:

  • 您可以创建一个 javascript 数组并以 1-4 字节的小块传递数据(这真的非常低效)
  • 您可以创建嵌入在插件中的网络服务器并从那里请求数据(我已经这样做了,它可以很好地工作,但请记住,如果您从 SSL 网站使用它,当嵌入式网络服务器时,您会收到安全警告不是 SSL)
  • 您可以对二进制数据进行 base64 编码并将其作为字符串发送。

这些是我看到的方式。您不能直接将实际二进制数据作为字符串发送的原因是 NPAPI 要求字符串数据为 UTF8,但如果您对其进行 base64 编码,则它可以正常工作。

对不起,我不能给你一个“更快乐”的解决方案:-/

于 2012-05-14T13:53:25.657 回答