2016-08-17 88 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

是的,我今天自己测试了一下,我发现它的工作原理是它可以像我原来的方法那样释放浏览器,但它似乎并没有停止下载,而后继续在后台下载。您是否监控过您的网络使用情况,以查看检索到的文件的大小?在我的它下载整个文件仍然在后台。 –