alan
/
sfs
1
Fork 0

support range requests

This commit is contained in:
Alan Faubert 2019-10-30 19:56:02 -04:00
parent 12eed26d24
commit de8c6d90b7
1 changed files with 19 additions and 5 deletions

24
sfs.js
View File

@ -66,11 +66,25 @@ http
) {
type += '; charset=utf-8';
}
res.writeHead(200, {
'content-type': type,
'content-length': stats.size,
});
fs.createReadStream(path)
let range = /^bytes=(\d+)-(\d*)$/.exec(req.headers.range);
if (range) {
const start = +range[1];
const end = range[2] ? +range[2] : stats.size - 1;
range = start <= end && end < stats.size ? { start, end } : null;
}
if (range) {
res.writeHead(206, {
'content-type': type,
'content-range': `bytes ${range.start}-${range.end}/${stats.size}`,
'content-length': range.end - range.start + 1,
});
} else {
res.writeHead(200, {
'content-type': type,
'content-length': stats.size,
});
}
fs.createReadStream(path, range)
.on('error', () => sendError(res, 500, 'Internal Server Error'))
.pipe(res);
return;