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

Firefox addon 如何让Firefox使用Firefox插件sdk处理POST请求的结果?,firefox-addon,firefox-addon-sdk,Firefox Addon,Firefox Addon Sdk,我想将我的插件中的图像发布到我的Servlet中,该Servlet处理图像并返回PDF。servlet可以工作。我只是不知道如何处理插件生成的PDF const request= require("sdk/request").Request; ... let req= request({ url: "http://localhost:8090/Whatever/PdfServlet", content: pa

我想将我的插件中的图像发布到我的Servlet中,该Servlet处理图像并返回PDF。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();
这里,对象参数包含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]
    });

对于WebExtensions,我必须从内容脚本中插入并提交表单。