1

我正在开发一个简单的应用程序,允许用户上传他们的内容。我想限制 Express 接受的文件大小。我知道我可以使用

app.use(express.limit('2mb'));

但我想动态更改限制。某些用户会有更高的限制。

最好的解决方案是首先检查content-length标题,然后如果文件大小低于限制,则开始解析上传,但 Express 会自动将文件上传保存到磁盘(/tmp 目录)。因此,如果有人发送 1GB 文件,即使我不想允许,该文件也会被解析并保存到磁盘。

提前致谢!

4

2 回答 2

4

在添加bodyParser()之前添加limit(),例如:

app.use(express.limit(100000));
app.use(express.bodyParser({uploadDir: '/tmp', keepExtensions:true}));

这样上传的文件太大时不会保存在 /tmp 中。

于 2013-02-19T19:30:16.443 回答
1

Express 基本上使用 connect 的 limit() 中间件。

因此,您可能想编写自己的中间件,而不是使用默认的 limit()。

您可以从这里https://github.com/senchalabs/connect/blob/2.24.2/lib/middleware/limit.js#L40查看 limit() 的源代码开始

于 2012-05-14T03:13:38.257 回答