Skip to content
On this page

koa-send

简介

koa-send 是一个用于安全地传输文件的中间件,它提供了一种安全可靠的方式来发送静态文件。这个中间件是许多其他中间件(如 koa-static)的基础,支持范围请求、条件请求等特性。

安装

bash
npm install koa-send

基本使用

javascript
const Koa = require('koa');
const send = require('koa-send');
const path = require('path');

const app = new Koa();

app.use(async (ctx) => {
  // 发送文件
  if (ctx.path.startsWith('/download')) {
    await send(ctx, 'file.txt', { root: path.join(__dirname, 'files') });
  }
});

app.listen(3000);

高级配置

javascript
const Koa = require('koa');
const send = require('koa-send');
const path = require('path');

const app = new Koa();

app.use(async (ctx) => {
  await send(ctx, ctx.path, {
    root: path.join(__dirname, 'public'),     // 根目录
    maxage: 1000 * 60 * 60 * 24 * 7,         // 缓存时间(7天)
    gzip: true,                              // 启用 gzip 压缩
    brotli: true,                            // 启用 brotli 压缩
    format: true,                            // 格式化路径
    setHeaders: (res, path, stats) => {      // 自定义响应头
      res.setHeader('Cache-Control', 'private');
    },
    hidden: false                            // 是否发送隐藏文件
  });
});

app.listen(3000);

注意事项

  1. 始终指定 root 选项以限制文件访问范围,防止目录遍历攻击
  2. 谨慎使用 hidden 选项,避免意外暴露敏感文件
  3. 合理设置缓存时间,平衡性能和实时性
  4. 对于大文件传输,koa-send 会自动处理范围请求(Range headers)
  5. 建议配合错误处理中间件使用,优雅处理文件不存在等异常情况

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