在Express(node.js)中动态限制上载文件大小

时间:2012-05-13 18:56:46

标签: node.js upload express

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

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

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

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

提前致谢!

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

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

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

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