我正在开发一个允许用户上传其内容的简单应用。我想限制Express接受的文件大小。我知道我可以使用
app.use(express.limit('2mb'));
但我想动态更改限制。某些用户将有更高的限制。
最好的解决方案是首先检查content-length
标题,如果文件大小低于限制,那么THEN开始解析上传,但Express会自动将文件上传保存到磁盘(/ tmp目录)。因此,如果有人发送1GB文件,即使我不想允许,也会解析该文件并将其保存到磁盘。
提前致谢!
答案 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