我正在使用 multer v1.3.0 和express v4.15.4。
我使用了如下所示的文件大小限制
multer({
storage: storage,
limits: {fileSize: 1*1000*50, files:1},
fileFilter: function (req, file, cb) {
if (_.indexOf(['image/jpeg', 'image/png'], file.mimetype) == -1)
cb(null, false);
else
cb(null, true)
}
});
在这种情况下,我认为限制不起作用。因为没有得到任何 LIMIT_FILE_SIZE 错误。
如果我删除 fileFilter,则会收到 LIMIT_FILE_SIZE 错误。
但在这两种情况下,首先上传整个文件,然后检查文件大小。
上传一个 1GB 的文件,然后检查它是否是 1MB,这根本就不好。 所以我想知道是否有什么办法可以在文件大小超出限制时停止上传。我不想依赖内容长度。
最佳答案
从查看 multer
和 busboy
源代码来看,它会计算数据大小作为运行总计,并在达到 fileSize
后立即停止读取流。请参阅此处的代码:
因此,虽然可以上传 1GB,但不应将其保存在任何地方。
如果您想停止继续上传,我认为您必须关闭套接字,尽管我自己还没有尝试过这一点。当请求仍在尝试上传数据时,我不知道有什么方法可以干净地响应。
相关:
关于node.js - 我们可以在不完全上传的情况下限制上传文件大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46140918/