最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

快递限制请求大小

运维笔记admin10浏览0评论

快递限制请求大小

快递限制请求大小

在以下情况下(简化),我想限制上传的请求大小:

app = Express();
router = Express.Router();
router.use('/upload', (req, res, next) => {
  const writeStream = fs.createWriteStream('filename');
  req.pipe(writeStream);
});
app.use(router);

如您所见,没有使用任何形式或类似形式(无法更改此形式)。因此,该数据作为原始数据流提供。

由于在这种情况下我找不到任何现有的模块(body-parser在这种情况下不起作用,raw-body也不能使用,因为应保持流不变),我目前的方法是使用以下方法代码作为快递的中间件:

function(req, res, next) {
  if (req.headers['content-length'] > limit) {
    res.set("Connection", "close");
    res.status(413).end();
    return;
  }
  let received = 0;
  req.on('data', (chunk) => {
    received += chunk.length;
    if (received > limit) {
      res.set("Connection", "close");
      res.status(413).end();
    }
  })
  next();
})

还有其他更好的方法吗?有没有现成的npm软件包可以做到这一点?

回答如下:

最后,我使用@ambianBeing提供的答案解决了它,并重写了后来处理缓冲区而不是流的函数。

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论