2014-11-05 54 views
6

我在使用FileSaver.jsBlob.js到Angular JS應用程序中以保存由REST服務(返回表示文件的字節數組)返回的PDF。保存由服務返回的PDF

var headers = {headers: {"Authorization":"Bearer "+token, "Accept":"application/pdf"}}; 

    $http.get(URL, headers) 
    .success(function (data) { 
     var blob = new Blob([data], {type: 'application/pdf'}); 
     saveAs(blob, 'contract.pdf'); 
    }); 

該文件被保存爲正確的類型和頁數是正確的,但它是完全空白的。 用編輯器打開它,結果證明它只包含服務器返回的數據的第一部分,就像它被截斷一樣。

感謝大家幫忙!

+1

你解決了嗎? – ronnyfm 2015-02-23 23:00:29

+0

同樣的問題在這裏.. ;-)你有沒有找到解決方案?謝謝。 – 2015-08-10 13:47:23

+0

也卡在這。 – user2085143 2015-11-10 17:46:37

回答

7

$ http.get可能不會正確處理二進制數據。嘗試使用$http({method: "GET", url: URL, responseType: "arraybuffer", ...})(see angularjs)來獲取可以放入數據的二進制對象。

你也可以使用responseType: "blob"所以你甚至不需要創建var blob,但我認爲responseType的瀏覽器支持較少。

0

將配置參數的響應類型添加到我的工作。試試:

var config = { responseType: 'blob', headers: {"Authorization":"Bearer "+token, 
"Accept":"application/pdf"}}; 

    $http.get(URL, config) 
     .success(function (data) { 
      var blob = new Blob([data], {type: 'application/pdf'}); 
      saveAs(blob, 'contract.pdf'); 
     });