Skip to content
On this page

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);

注意事项

  1. 建议将 range 中间件放在压缩中间件之前使用
  2. 对于大文件传输,合理设置 maxBytes 值以控制内存使用
  3. 确保正确设置 Content-Type 和 Content-Length 响应头
  4. 配合 koa-send 使用可以更方便地处理静态文件的范围请求
  5. 在处理视频流时,建议启用范围请求以支持视频播放器的快进功能

要保持清醒 永远不抱有意外的幻想 凭空的期待最要命