2016-04-17 27 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; 
     } 
    },