2015-09-29 47 views
1

的PapaParse CSV解析器具有的功能比普通HTTP流式傳輸,解析:來自http的PapaParse流如何?

Papa.parse("http://example.com/big.csv", { 
    download: true, 
    step: function(row) { 
     console.log("Row:", row.data); 
    }, 
    complete: function() { 
     console.log("All done!"); 
    } 
}); 

我過去試圖實現通過onprogress事件瀏覽器中的流解析器,但我發現,瀏覽器不給訪問xhr.responseText,直到請求完成。 PapaParse如何做到這一點?

我會真的很感興趣的圖書館或jQuery插件,這是純文本。

+0

可以看到部分回覆。見https://friendlybit.com/js/partial-xmlhttprequest-responses/ – Barmar

+0

你是對的,它確實有效。不知道爲什麼這不工作之前:http://jsfiddle.net/mfqdv2oy/ – Jeroen

回答

0

Papa Parse使用Range標頭一次一個請求文件的特定字節。我星期五在UtahJS會議上發了一個talk about this。儘管演示文稿更多地是從磁盤本地加載文件,但同樣的原理適用於遠程文件 - 僅僅是機制不同。

如果您碰巧遇到這種情況,實施您自己並不難,但請謹慎對待bugs in the browser

+0

我還是不太明白。你使用哪個事件來調用解析器?你會做出最小的jsfiddle嗎?這裏是一些CORS數據,我想逐行解析:) https://jeroenooms.github.io/data/diamonds.json – Jeroen

+0

@Jeroen我假設你只是使用普通的'readystatechange'頭文件。當你使用'Range'頭時,當服務器返回文件的那部分時,響應就會準備好。所以你只要不斷提高你所要求的範圍。 – Barmar

+0

@Jeroen這是一個常規的XHR請求,但我將Range HTTP頭添加到請求中,並使用不同的字節範圍重複執行幾次以遍歷整個文件。 – Matt