Appearance
koa-range
简介
koa-range 是一个用于处理 HTTP Range 请求的中间件,它支持断点续传和分片下载功能,对于大文件传输和视频流媒体服务特别有用。
安装
bash
npm install koa-range基本使用
javascript
const Koa = require('koa');
const range = require('koa-range');
const fs = require('fs');
const path = require('path');
const app = new Koa();
// 注册中间件
app.use(range);
app.use(async (ctx) => {
if (ctx.path === '/download/video.mp4') {
const filePath = path.join(__dirname, 'videos/video.mp4');
const stats = fs.statSync(filePath);
ctx.response.set({
'Content-Type': 'video/mp4',
'Content-Length': stats.size
});
ctx.body = fs.createReadStream(filePath);
}
});
app.listen(3000);高级配置
javascript
const Koa = require('koa');
const range = require('koa-range');
const app = new Koa();
app.use(range({
// 设置最大范围大小(字节)
maxBytes: 1024 * 1024 * 10, // 10MB
// 自定义范围处理
combine: true // 合并重叠的范围请求
}));
app.use(async (ctx) => {
// 处理文件请求
if (ctx.path.startsWith('/download')) {
// 实现文件传输逻辑
}
});
app.listen(3000);注意事项
- 建议将 range 中间件放在压缩中间件之前使用
- 对于大文件传输,合理设置 maxBytes 值以控制内存使用
- 确保正确设置 Content-Type 和 Content-Length 响应头
- 配合 koa-send 使用可以更方便地处理静态文件的范围请求
- 在处理视频流时,建议启用范围请求以支持视频播放器的快进功能