我正在尝试使用Javascript读取存储在AWS S3上的大文件的CSV标头。我想知道是否有一种只读取标头而不读取整个文件的方法。
我尝试使用d3.csv和http.get,但是它们都加载了整个文件。有什么建议吗?
答案 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"