2016-09-07 16 views
9

Tôi đang sử dụng mã sau để lưu tệp dưới dạng csv.Góc lưu tệp dưới dạng kết quả csv trong Lỗi mạng không thành công Chỉ trên 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; 
}; 

Tệp đang hoạt động trên hầu hết các trường hợp nhưng vì lý do nào đó khi tệp lớn hơn 10MB tôi nhận được "Không thành công - Lỗi mạng".

Nó chỉ xảy ra trên chrome.

Tôi đã cố tìm kiếm trên web về vấn đề này và không thể tìm thấy bất kỳ nội dung nào có liên quan.

Bạn có thể nghĩ ra một ý tưởng tại sao nó xảy ra? hoặc có thể sử dụng một phương pháp lưu tệp khác sẽ hoạt động trên chrome/firefox/IE thay vì chức năng của tôi?

Trả lời

17

tôi cuối cùng đã được sử dụng thế này, hy vọng nó có thể giúp một trong những cuộc gặp gỡ tiếp theo vấn đề này:

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) là trường hợp một tốt thay thế để tiết kiệm bên khách hàng blobs. Nó sẽ chăm sóc sự khác biệt của trình duyệt – Endless

+1

Điều này đã cứu tôi! Tôi đã nghi ngờ rằng tôi cần sử dụng API blob nhưng không chắc chắn lỗi có liên quan. Cảm ơn rất nhiều – pavlag

+0

Cảm ơn @Liad đã hợp tác với tôi – Ajinkya

Các vấn đề liên quan