У меня есть сервер backend в игровой инфраструктуре, который возвращает огромный файл text/csv в кусках. Как я могу получить файл в угловом формате, чтобы сохранить файл в клиенте.Загрузить текст/содержимое csv как огромный файл с сервера в Angular
В обычной загрузке файла можно использовать следующий раствор:
$http.post('/exportFile', reqData).
success(function(data, status, headers, config){
var pom = document.createElement('a');
pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(data));
pom.setAttribute('download', "file.csv");
pom.click();
}).
error(function(data, status, headers, config){
alert(data);
});
Но как обрабатывать порции? Спасибо!
так что в основном вы говорите, если сервер возвращает файл в кусках, его можно получить в интерфейсе с помощью обычного обработчика $ http.success? Нет необходимости обрабатывать куски? –
другой, хотя при написании фрагментов, почему я не вижу нескольких ответов на метод записи? общественный статический индекс Результат() {// подготовить Chunked поток текста Куски чанки = новые StringChunks() { // Вызывается, когда поток готов общественности недействительным onReady (Chunks.Out из) { out.write ("Kiki"); out.write ("foo"); out.write ("bar"); out.close(); } }; // Обслуживает этот поток с помощью 200 OK return ok (chunks); } –
Я не думаю, что вы получите инкрементный доступ к файлу на клиенте как 1 к 1 с каждым вызовом .write(). Чанкрованные ответы просто плохо поддерживаются, поскольку кометы/websockets/sse больше заняли место для потоковой передачи. В любом случае, вы также можете играть с XHR напрямую, чтобы попытаться получить каждый кусок в отдельности, например. var xhr = new XMLHttpRequest() xhr.open ("POST", "/ exportFile", true) xhr.onprogress = function() { console.log ("onProgress" + xhr.responseText) } –