node.js 断点续传示例
时间: 2023-12-16 19:28:10 浏览: 85
以下是一个使用Node.js实现的简单断点续传示例:
```javascript
const http = require('http');
const fs = require('fs');
const path = require('path');
const server = http.createServer((req, res) => {
const filePath = path.join(__dirname, 'largefile.mp4');
const stat = fs.statSync(filePath);
const fileSize = stat.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 });
const head = {
'Content-Range': `bytes ${start}-${end}/${fileSize}`,
'Accept-Ranges': 'bytes',
'Content-Length': chunkSize,
'Content-Type': 'video/mp4',
};
res.writeHead(206, head);
file.pipe(res);
} else {
const head = {
'Content-Length': fileSize,
'Content-Type': 'video/mp4',
};
res.writeHead(200, head);
fs.createReadStream(filePath).pipe(res);
}
});
server.listen(3000, () => {
console.log('Server listening on port:3000');
});
```
该示例使用Node.js创建了一个HTTP服务器,当客户端请求一个视频文件时,服务器会检查请求头中是否包含`range`字段,如果包含则表示客户端需要请求文件的某个部分,服务器会根据请求头中的`range`字段返回对应的文件部分,从而实现了断点续传的功能。
阅读全文