2015-10-16 86 views
2

我正在使用javascript將數據導出到csv。 由於某些原因,我不允許使用傳統的 <a download="filename.csv" /a>來設置文件名。如何在window.location.href中指定csv文件名下載

我有下面的代碼行:

window.location.href = "data:text/csv;base64," + csvdata 

在哪裏,我怎麼可以插入並指定文件名和擴展名,使其工作?

+0

僅供參考,我使用角度。用ng-click來觸發一個函數。由於某些方面,我不會也不能創建標籤。因此會有另一種方式來指定window.location.href來指定文件名? – WABBIT0111

回答

4

這是不可能的方式,嘗試用它點擊這樣效仿<a href=..

 var csvdata = "Hello World"; // only for test 
 
     var byteNumbers = new Uint8Array(csvdata.length); 
 

 
\t \t for (var i = 0; i < csvdata.length; i++) 
 
\t \t { 
 
\t \t \t byteNumbers[i] = csvdata.charCodeAt(i); 
 
\t \t } 
 
\t \t var blob = new Blob([byteNumbers], {type: "text/csv"}); 
 
    
 
     // Construct the uri 
 
\t \t var uri = URL.createObjectURL(blob); 
 

 
\t \t // Construct the <a> element 
 
\t \t var link = document.createElement("a"); 
 
\t \t link.download = 'myfile.csv'; 
 
\t \t link.href = uri; 
 

 
\t \t document.body.appendChild(link); 
 
\t \t link.click(); 
 

 
\t \t // Cleanup the DOM 
 
\t \t document.body.removeChild(link); 
 
\t \t delete link;

+0

這是絕對不可能的其他方式? PHP可以指定標題,我想知道是否有任何JavaScript等價物。 – WABBIT0111

+0

有。但不是'window.location'屬性。這爲瀏覽器提供了一個新的URL,它希望這些標題來自該URL服務器端 - 標題的性質。 –