2013-10-15 26 views
2

我想從我的插件發佈圖像到我的Servlet來處理圖像並返回PDF。該servlet工作。我只是不知道如何處理從我的插件生成的PDF。如何讓Firefox用firefox-addon-sdk處理POST請求的結果?

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?

回答

2

這裏有一個解決方案:

 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] 
    }); 
+0

真棒人感謝分享你找到了解決辦法。 – Noitidart

+0

對於WebExtensions,我不得不從內容腳本注入並提交表單。 –