Невозможно сохранить контент размером более 8 МБ в файле CSV с помощью Angular JS.

Я получаю строку в ответ от моего бэкэнда с более чем 8 МБ содержимого csv.

с этим кодом:

myService.getCsvExportContent(vm.searchParams).then(function (content) {
        var encodedUri = encodeURI(content);
        var link = document.createElement("a");
        link.setAttribute("href", encodedUri);
        link.setAttribute("download", "MCsExport.csv");
        document.body.appendChild(link);
        link.click();
      });

Когда результат меньше 8 Мб, он создает весь файл, но когда он больше 8 Мб, он сохраняет половину данных в файл, и я теряю данные. (Я могу видеть размер путем отладки в моем браузере)

Я попробовал angular-file-saver, но все еще получаю ошибки при внедрении зависимости у меня не работает в AngularJS.

Я попытался создать объект Blob с содержимым, тот же результат.

Пожалуйста помоги. Спасибо.


person Mohammed EL JOUHARI    schedule 15.03.2021    source источник
comment
Ну, это определенно не будет работать с обычным URL-адресом, так как у него очень маленький лимит, который вы достигнете довольно быстро. Попробуйте также добавить свой код Blob, так как это правильный подход, и его можно использовать даже для экспорта видеофайлов, поэтому он должен уметь делать это правильно. Однако правильная настройка вашего BLOB-объекта важна (лучше всего частями), поэтому, пожалуйста, поделитесь этим кодом?   -  person somethinghere    schedule 15.03.2021


Ответы (2)


Попробуйте этот способ, который работает для меня:

myService.getCsvExportContent(vm.searchParams).then(function (content) {
    var link = document.createElement("a");
    var blob = new Blob([content],{type: 'text/csv;charset=utf-8;'});
    var url = URL.createObjectURL(blob);
    link.href = url;
    link.setAttribute("download", "MCsExport.csv");
    link.click();
  });
person AvgustinTomsic    schedule 15.03.2021

Спасибо за помощь. Наконец, инъекция ngFileSaver сработала для меня. bower cache clean затем bower install angular-file-saver --save-dev и мой внедренный объект распознан.

Так что FileSaver.saveAs(blob, "filePath.csv") работало вполне нормально.

var blob = new Blob([content], {type: 'text/csv;charset=utf-8'});    
FileSaver.saveAs(blob, "Export.csv");
person Mohammed EL JOUHARI    schedule 16.03.2021