2017-05-25 40 views
0

我從服務器端獲取的POST請求的HTTP響應是一個xlsx文件。如何在angularjs 1中下載該文件?如何自動下載服務器發送的xlsx文件(在angularjs 1中)

注:res.download()不會在這裏工作,因爲它,我想提出一個POST請求,並res.download()僅適用於GET請求工作

+0

參考這個答案在這裏 https://stackoverflow.com/questions/19327749/javascript-blob-filename-without-link#19328891 – Slytherin

+0

重複問題的https: //stackoverflow.com/questions/31134961/downloading-excel-file-xlsx-in-angularjs-and-webapi – Kasiriveni

回答

0

以下應工作:

$http.post("url_here", post_data_to_send, {responseType: 'arraybuffer'}) 

    .success(function (data,status,headers) { 

       var blob = new Blob([data]); 
       var objectUrl = URL.createObjectURL(blob); 
       var a = document.createElement("a"); 
       a.style = "display:none"; 
       a.href = objectUrl; 
       a.download = headers().filename; 
       a.click();       
       console.log("Report downloaded"); 

       }).error(function (err) { 

        console.log(err); 

       }); 
0

你可以這樣做直接在Client Side上,您可能會遇到一些跨瀏覽器兼容性問題(最好的方法是始終通過服務器提供下載流,例如,用於大文件)。

// this example uses a JSON String 
 
// but you can do it with any valid blob argument 
 
const fileContent = [JSON.stringify(
 
    ['something', 'to', 'download'], null, 2 
 
)]; 
 

 
const downloader = document.createElement('a'); 
 

 
// set the filename here 
 
downloader.download = 'filename.json'; 
 

 
const blob = new Blob(fileContent, {type: 'text/plain'}); 
 
downloader.href = window.URL.createObjectURL(blob); 
 

 

 
// trigger the download 
 
downloader.click();

在我看來,一個重定向到下載資源的可能是最好的選擇。

相關問題