2016-08-17 87 views
3

我需要僅從遠程csv文件中提取標頭。使用papa解析從遠程csv文件獲取正義標頭

我目前的方法如下:

爸爸解析具有流數據,並期待在每個單獨的行,這是偉大的方法,我可以使用parser.abort終止流(),以防止它去任何第一行後進一步,這看起來如下:

Papa.parse(csv_file_and_path,{header:true, worker:true, 
    download: true, 
    step: function(row, parser) 
    { 
     //DO MY STUFF HERE 
     parser.abort(); 
    } 
}); 

這工作得很好,但因爲我使用的是遠程文件,它有下載,以讀取其中的數據。即使代碼在第一行被解析後釋放控制回到瀏覽器,在解析找到第一行並下達了我需要的信息之後,下載仍會持續很長時間,特別是對於大型文件,其下載可以持續很長時間我有我需要的時間後的時間。

有沒有更有效的方法來做到這一點?我可以阻止papa解析下載整個文件嗎?

我一直在使用

Papa.parse(csv_file,{header:true, 
download: true, 
preview:1, 
complete: function(results){ 
    //DO MY STUFF HERE 
} 
}); 

試圖但這同樣的事情,它下載整個文件,但與第一行被解析後的第一個辦法還給控制瀏覽器。

回答

1

我想出瞭解決的方法是非常相似,我原來的問題,不同之處在於我中止,完成並清除記憶。

使用以下方法,只下載一個文件塊,大量減少大文件的帶寬開銷,因爲在解析第一行後沒有繼續下載。

Papa.parse(csv_file,{header:true, 
    download: true, 
    step: function(results, parser) { 

     //DO MY THING HERE 

     parser.abort(); 
     results=null; //Attempting to clear the results from memory 
     delete results; //Attempting to clear the results from memory 

    }, complete: function(results){ 

     results=null; //Attempting to clear the results from memory 
     delete results; //Attempting to clear the results from memory 

    } 
}); 
0

可以使用PapaParse的預覽選項:

Papa.parse(..., { 
      preview: 5, ... 

而且閱讀:https://github.com/mholt/PapaParse/issues/47

相關主題:Javascript using File.Reader() to read line by line

+0

預覽方法不起作用,因爲它已經過測試,所以我應該提到過,我會更新我的問題。預覽似乎並沒有阻止它下載整個文件,它應該這樣做,但我已經測試過了,但它沒有。 –

+0

它適用於我,也許我們使用不同的版本,嘗試與最新的一個。它顯然凍結了我的大型CSV文件的瀏覽器,但沒有預覽。另外請注意,我使用Firefox來測試這個。 –

+0

是的,我今天自己測試了一下,我發現它的工作原理是它可以像我原來的方法那樣釋放瀏覽器,但它似乎並沒有停止下載,而後繼續在後臺下載。您是否監控過您的網絡使用情況,以查看檢索到的文件的大小?在我的它下載整個文件仍然在後臺。 –