2016-09-07 12 views
9

Korzystam z poniższego kodu, aby zapisać plik jako CSV.Kątowe zapisz plik jako csv w wyniku Nie powiodło się - błąd sieci Tylko w 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; 
}; 

Plik działa w większości przypadków, ale z jakiegoś powodu, gdy plik jest większy niż 10 MB otrzymuję „nie powiodło się - błąd sieci”.

Zdarza się tylko na chromie.

Próbowałem wyszukać w internecie ten problem i nie znalazłem nic istotnego.

Czy możesz wymyślić pomysł, dlaczego tak się dzieje? A może użyjesz innej metody zapisywania plików, która będzie działać na chrome/firefox/IE zamiast mojej funkcji?

Odpowiedz

17

I wreszcie stosować ten, nadzieję, że może pomóc następnego wystąpienia tego problemu:

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) jest inaczej dobry alternatywa dla zapisywania strony klienta BLOBa. Dba o różnicę w przeglądarce – Endless

+1

To mnie uratowało! Byłem podejrzany, że musiałem użyć interfejsu API blob, ale nie byłem pewien, czy błąd był związany. Wielkie dzięki – pavlag

+0

Dzięki @Liad, który działa dla mnie – Ajinkya

Powiązane problemy