2016-09-07 17 views
9

次のコードを使用してファイルをcsvとして保存しています。csvの角度保存ファイルが失敗したネットワークエラーの原因

$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; 
}; 

ファイルは、ほとんどの場合に取り組んでいるが、ファイルが10メガバイトよりも大きい何らかの理由で私は取得「失敗しました - ネットワークエラーを」。

これはクロムでのみ発生します。

ウェブでこの問題を検索しようとしましたが、関連するものが見つかりませんでした。

なぜそれが起こるか考えてもいいですか?または私の関数の代わりに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

私のために働くおかげで@ライド – Ajinkya

関連する問題