firefox-addon - 如何让 Firefox 使用 firefox-addon-sdk 处理 POST 请求的结果?

标签 firefox-addon firefox-addon-sdk

我想将我的插件中的图像发布到处理图像并返回 PDF 的 Servlet。 servlet 工作了。我只是不知道如何处理我的插件生成的 PDF。

const request= require("sdk/request").Request;
...
            let req= request({
                url: "http://localhost:8090/Whatever/PdfServlet",
                content: params,
                onComplete: function (response) {
                    console.log(response.text)
                }
            });
            req.post();

这里,对象params包含base64编码的图像。一切正常,我可以在控制台日志中看到 PDF 流的开头。但是如何让 Firefox 显示其打开/保存对话框以便用户可以保存或查看 PDF?

最佳答案

解决方案如下:

      const querystring= require('sdk/querystring');
      const winUtils= require('sdk/window/utils');

...
            let stringStream= Cc["@mozilla.org/io/string-input-stream;1"].
                   createInstance(Ci.nsIStringInputStream);
            stringStream.data= querystring.stringify(params);
            let postData= Cc["@mozilla.org/network/mime-input-stream;1"].
               createInstance(Ci.nsIMIMEInputStream);
            postData.addHeader("Content-Type", "application/x-www-form-urlencoded");
            postData.addContentLength = true;
            postData.setData(stringStream);
            winUtils.getMostRecentBrowserWindow().loadURI("http://localhost:8090/Whatever/PdfServlet", null, postData, null);

或者我可以打开一个新窗口,但我不喜欢这样:

    winUtils.openDialog({
        args: ["http://localhost:8090/Whatever/PdfServlet", null, null, postData]
    });

关于firefox-addon - 如何让 Firefox 使用 firefox-addon-sdk 处理 POST 请求的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19386049/

相关文章:

javascript - 当用户关闭以前的选项卡时,XUL 获取当前选项卡编号

javascript - 在 Firefox 扩展中等待文件复制完成

javascript - 与 DOM 交互的 Firefox 扩展

firefox-addon - 在单个 Firefox 选项卡中禁用 JavaScript

javascript - Firefox 扩展 - 我们如何检查这是否是内容脚本?

javascript - 每次加载页面时Firefox附加组件访问变量

javascript - 调试 Firefox 插件的 javascript

javascript - Firefox 扩展的 "Extension Storage"的数据存储在哪里?

javascript - 在 Firefox 附加组件中从 iframe 关闭面板

firefox - 在 Firefox ChromeWorker 中使用 ctypes 函数