我正在开发一个简单的应用程序,允许用户上传他们的内容。我想限制 Express 接受的文件大小。我知道我可以使用
app.use(express.limit('2mb'));
但我想动态更改限制。某些用户会有更高的限制。
最好的解决方案是首先检查content-length
标题,然后如果文件大小低于限制,则开始解析上传,但 Express 会自动将文件上传保存到磁盘(/tmp 目录)。因此,如果有人发送 1GB 文件,即使我不想允许,该文件也会被解析并保存到磁盘。
提前致谢!
在添加bodyParser()之前添加limit(),例如:
app.use(express.limit(100000));
app.use(express.bodyParser({uploadDir: '/tmp', keepExtensions:true}));
这样上传的文件太大时不会保存在 /tmp 中。
Express 基本上使用 connect 的 limit() 中间件。
因此,您可能想编写自己的中间件,而不是使用默认的 limit()。
您可以从这里https://github.com/senchalabs/connect/blob/2.24.2/lib/middleware/limit.js#L40查看 limit() 的源代码开始