2016-03-08 211 views
1

我想下載一個通過AJAX加載的PDF文件。我試圖通過使用庫FileSave.js來做到這一點。以下代碼有效,但是當我打開PDF文件時,它完全是空的。我注意到PDF文件的編碼是UTF-8,但端點使用ANSI編碼返回PDF。用JavaScript下載PDF文件

要使用正確的編碼下載文件,我需要做些什麼?

var downloadReport = function() { 
    $http.get("../api/report").then(function(response) { 

     var blob = new Blob([response.data], { 
      type: "application/pdf", 
     }); 
     saveAs(blob, fileName); 

    }); 
}; 
+1

您可以驗證blob的內容嗎? – Halcyon

+0

內容似乎是正確的。端點返回'application/pdf'。當我在瀏覽器中直接調用端點時,下載效果很好。 – eztam

回答

0

最後我發現了我自己的問題。我必須將responseType: "arrayBuffer"添加到http請求中:

$http({ 
    method: 'POST', 
    url: '../api/report', 
    responseType: "arraybuffer" 
    }).then(function(response) { 
     var blob = new Blob([response.data], { 
      type: "application/pdf", 
     }); 
    saveAs(blob, fileName); 
    }); 
};