在HTTP中,部分响应通常使用206 Partial Content状态码。这个状态码表示服务器成功接收到了请求,并返回了部分请求的内容。这通常用于处理大文件的断点续传或者分块下载。
以下是一个使用206状态码的示例代码:
const http = require('http');
const fs = require('fs');
http.createServer((req, res) => {
const filePath = 'path_to_large_file';
const fileSize = fs.statSync(filePath).size;
const range = req.headers.range;
if (range) {
const parts = range.replace(/bytes=/, "").split("-");
const start = parseInt(parts[0], 10);
const end = parts[1]
? parseInt(parts[1], 10)
: fileSize-1;
const chunkSize = (end-start) + 1;
const file = fs.createReadStream(filePath, {start, end});
res.writeHead(206, {
'Content-Range': `bytes ${start}-${end}/${fileSize}`,
'Accept-Ranges': 'bytes',
'Content-Length': chunkSize,
'Content-Type': 'video/mp4'
});
file.pipe(res);
} else {
res.writeHead(200, {
'Content-Length': fileSize,
'Content-Type': 'video/mp4'
});
fs.createReadStream(filePath).pipe(res);
}
}).listen(3000, () => {
console.log('Server is running on port 3000');
});
在上面的示例中,服务器会检查请求的Range
头部字段,如果存在则表示是一个部分请求,服务器会返回相应的部分内容,并在响应头部添加Content-Range
字段来标识返回的部分范围。如果不存在Range
字段,则表示是一个完整请求,服务器会返回整个文件内容。
上一篇:部分响应式表单与父子路由