在(浏览器)javascript中读取大CSV文件的标题(仅)

时间:2019-04-05 08:53:15

标签: javascript angular csv http

我正在尝试使用Javascript读取存储在AWS S3上的大文件的CSV标头。我想知道是否有一种只读取标头而不读取整个文件的方法。

我尝试使用d3.csv和http.get,但是它们都加载了整个文件。有什么建议吗?

1 个答案:

答案 0 :(得分:-1)

我相信您可以在标头请求中使用范围字节来读取文件的一部分

S3 Docs范围:字节= 0-12000

已编辑的工作示例。

fetch("https://s3.amazonaws.com/aml-sample-data/banking.csv", {
   headers: {
    'content-type': 'multipart/byteranges',
    'range': 'bytes=0-512'
   },
  })
.then(response => {
    var reader = response.body.getReader().read().then(data => {
  var binArray = data.value;
  var str = "";
  for (var i = 0; i < binArray.length; i++) {
    str += String.fromCharCode(parseInt(binArray[i]));
  }

   var result = str.search(/\n/);
   if (result > -1) {
   var header = str.substring(0, result);
   console.log('found' , header);

     return response.text();

  } else {
return response.text();
  }

    });

})
.then(response => {
    var result = response.search(/\n/);
    if (result > -1) {
  var header = response.substring(0, result);
  console.log('from last request', header);
    }
});   

要进行测试,请不要忘记在Chrome浏览器中关闭cors检查

chrome.exe  --disable-site-isolation-trials --disable-web-security --user- 
data-dir="D:\temp"