Angular save file as csv导致失败 - 网络错误仅限Chrome

Lia*_*nat 15 javascript csv google-chrome angularjs

我正在使用以下代码将文件另存为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;
};
Run Code Online (Sandbox Code Playgroud)

该文件正在处理大多数情况但由于某种原因,当文件大于10MB时,我得到"失败 - 网络错误".

它只发生在chrome上.

我试图在网上搜索此问题,但找不到任何相关内容.

你能想到一个想法为什么会发生?或者可能使用不同的保存文件方法,可以在chrome/firefox/IE上使用而不是我的函数?

Lia*_*nat 32

我终于使用了这个,希望它可以帮助下一个遇到这个问题:

 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);
            }
Run Code Online (Sandbox Code Playgroud)

  • [FileSaver](https://github.com/eligrey/FileSaver.js)是另一种保存blob客户端的好方法.它会照顾浏览器的不同之处 (3认同)