我想知道是否可以使用JavaScript fetch
API在恶劣的网络条件下下载很大的文件?我正在下载一个大文件作为流,用response.body.getReader()
来“消耗”它,但是由于文件太大(很多GB),因此在下载过程中不可避免地会出现网络错误,而且我不想从头开始。
是否有某种方法可以fetch
,但是从一个特定的字节开始,或者通过使用标头来开始?
This question似乎暗示可以通过获取so long as the server supports it来进行字节范围请求。
不幸的是,用fetch
检查服务器支持不是那么容易,因为您只能通过CORS请求获得limited number of headers。
我当前的代码看起来像这样:
let reader = await fetch("https://example.com/veryBigFile.txt").then(r => r.body.getReader());
let c;
while(c = await reader.read(), !c.done) {
consumeChunk( c.value );
// count bytes here?
}