2016-04-17 67 views
0

我正試圖將數據導出到文件。 導出非常適合所有文件,但是當我嘗試導出大型數據集時,它不起作用。導出JavaScript不適用於大文件

任何線索?

這裏是代碼

a.href = 'data:' + mimeType + ',' + encodeURIComponent(content); 
a.setAttribute('download', fileName); 
document.body.appendChild(a); 
a.click(); 
+0

您的數據集有多大?另外,你希望發生什麼?究竟發生了什麼?有沒有控制檯錯誤? – evolutionxbox

+0

沒有控制檯錯誤,但我設法解決這個使用Blob。謝謝!!! –

+0

你介意爲你的問題創建一個答案,說明你是如何解決這個問題的?爲什麼它不工作? – evolutionxbox

回答

0

我用下面的函數。不知道爲什麼它解決了這個問題。我想這是一個瀏覽器的東西。

download(content, fileName, mimeType) { 
     var a = document.createElement('a'); 
     mimeType = mimeType || 'application/octet-stream'; 

     if (navigator.msSaveBlob) { // IE10 
      return navigator.msSaveBlob(new Blob([content], { type: mimeType }),  fileName); 
     } else if ('download' in a) { //html5 A[download] 
      var csvData = new Blob([content], { type: mimeType }); 
      var csvUrl = URL.createObjectURL(csvData); 
      //a.href = 'data:' + mimeType + ',' + encodeURIComponent(content); 
      a.href = csvUrl; 
      a.setAttribute('download', fileName); 
      document.body.appendChild(a); 
      a.click(); 
      console.log(a); 
      //document.body.removeChild(a); 
      /* 
      setTimeout(function() { 
       a.click(); 
       console.log(a); 
       document.body.removeChild(a); 
      }, 66);*/ 

      return true; 
     } else { //do iframe dataURL download (old ch+FF): 
      var f = document.createElement('iframe'); 
      document.body.appendChild(f); 
      f.src = 'data:' + mimeType + ',' + encodeURIComponent(content); 

      setTimeout(function() { 
       document.body.removeChild(f); 
      }, 333); 
      return true; 
     } 
    },