0
我有一個後臺服務器在播放框架,它以塊的形式返回巨大的文本/ csv文件。 如何以角度接收文件以便能夠將文件保存在客戶端中。從Angular服務器下載文本/ csv內容爲大文件
在我可以採用如下方案常規文件下載:
$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處理程序接收? 有沒有必要處理塊? – 2014-09-13 17:14:54
另一個雖然,當寫塊,爲什麼我看不到每個寫入方法幾個響應? 公共靜態結果指數(){// 準備一個分塊文本流 結塊塊=新StringChunks(){ //調用時,流準備 公共無效onReady(Chunks.Out 出){ out.write( 「琪琪」); out.write(「foo」); out.write(「bar」); out.close(); } }; //用200 OK提供此流 return ok(chunks); } –
2014-09-14 10:49:01
我不認爲你會在每個.write()調用中以1對1的方式獲得對客戶端文件的增量訪問。由於comet/websockets/sse更多地取代了流媒體,所以分塊的響應根本得不到支持。無論如何,你也可以直接使用XHR來嘗試單獨獲取每個塊,例如var xhr = new XMLHttpRequest() xhr.open(「POST」,「/ exportFile」,true) xhr.onprogress = function(){ console.log(「onProgress」+ xhr.responseText) } – 2014-09-15 18:49:20