2016-09-07 107 views
9

我使用以下代碼將文件另存爲csv。作爲csv的角度保存文件導致失敗網絡錯誤只在Chrome上

$scope.saveCSVFile = function (result) 
{ 
    var a   = document.createElement('a'); 
    a.href = 'data:application/csv;charset=utf-8,' + encodeURIComponent(result.data); 
    a.target  = '_blank'; 
    a.download = $scope.getFileNameFromHttpResponse(result); 
    document.body.appendChild(a); 
    a.click(); 
    $scope.isReportInProgress = false; 
}; 

文件在大多數情況下,但由於某種原因工作時,文件的大小超過10MB我碰到一個「失敗 - 網絡錯誤」更大。

它只發生在鉻上。

我試圖在網絡上搜索這個問題,並找不到任何相關的東西。

你能想到一個想法爲什麼會發生?或者可能使用不同的保存文件方法,它可以在chrome/firefox/IE而不是我的函數上工作?

回答

17

我終於用這一個,希望它可以幫助下一個遇到此問題:

var blob = new Blob([result.data], {type: 'text/csv'}); 
      var filename = $scope.getFileNameFromHttpResponse(result); 
      if(window.navigator.msSaveOrOpenBlob) { 
       window.navigator.msSaveBlob(blob, filename); 
      } 
      else{ 
       var elem = window.document.createElement('a'); 
       elem.href = window.URL.createObjectURL(blob); 
       elem.download = filename; 
       document.body.appendChild(elem); 
       elem.click(); 
       document.body.removeChild(elem); 
      } 
+2

[FileSaver(https://github.com/eligrey/FileSaver.js)在其他方面的好替代保存blob客戶端。它照顧瀏覽器的差異 – Endless

+1

這救了我!我懷疑我需要使用blob API,但不確定錯誤是否相關。非常感謝 – pavlag

+0

感謝@Liad對我有用 – Ajinkya

相關問題