Node.js 使用multer上传时如何限制文件大小?

Node.js 使用multer上传时如何限制文件大小?,node.js,express,multer,Node.js,Express,Multer,我正在使用multer制作一个简单的文件上传系统: var maxSize = 1 * 1000 * 1000; var storage = multer.diskStorage({ destination: function (req, file, callback) { callback(null, 'public/upload'); }, filename: function (req, file, callback) { callback(null, fil

我正在使用multer制作一个简单的文件上传系统:

var maxSize = 1 * 1000 * 1000;

var storage = multer.diskStorage({
  destination: function (req, file, callback) {
    callback(null, 'public/upload');
  },
  filename: function (req, file, callback) {
    callback(null, file.originalname);
  },
  onFileUploadStart: function(file, req, res){
    if(req.files.file.length > maxSize) {
      return false;
    }
  }

});

var upload = multer({ storage : storage}).single('bestand');

router.post('/upload',function(req,res){
    upload(req,res,function(err) {
        if(err) {
            return res.end("Error uploading file.");
        }
        console.log(req.file);
        res.redirect(req.baseUrl);
    });
});
这一切都很好,文件被上传。唯一不起作用的是最大尺寸的限制。我这样做是为了检查onfileupload start文件的大小,如果它太大,它将返回false。但文件还是刚刚上传

看起来,
onFileUploadStart
什么都没做。我试图
console.log
在其中记录一些东西,但什么也没有


我做错了什么?使用multer上载时如何限制文件大小?

新的
multer
API没有
onFileUploadStart
。如果要限制文件大小,则应将
限制:{fileSize:maxSize}
添加到传递给
multer()的对象中:


在偶数
onFileUploadStart
的处理程序中,您在哪里看到需要返回
false
if
req.files.file.length>maxSize
?我正在学习一个教程。但是我假设你说这不是停止上传的正确方法?你能在同一个处理程序中记录文件吗?您看到了什么?显然,您应该使用
fileFilter
而不是处理偶数
onFileUploadStart
(显然文件大小未知或为0…)顺便说一句……检查一下您应该如何限制文件大小:如果您解决了问题,我鼓励你回答自己的问题;)这里还有另一个限制文件大小的示例(除其他外)::基本上需要将文件大小指定为
limits
对象,作为传递给
multer
的对象的属性传递给该对象,即类似这样的
var upload=multer({storage:storage,limits:{fileSize:maxSize}).单身('bestand')
…您应该能够添加一个快速错误处理程序,并检查
err.code===“LIMIT\u FILE\u SIZE”
@mscdex我也使用了fileSize。但我不认为它停止上传时,限制超过。而是上传整个文件&然后检查限制。我遗漏了什么吗?@JayadrathaMondal如果你能证明这一点,那么我会说向github上的multer问题跟踪器提交一个问题。@msdex是的,这是一个问题,尝试上传一个1GB的文件,你可以理解。我与LinusU(Multer维护人员)进行了交谈。而问题就列出来了。正在尝试multer v2.0 alpha。他说这可能是固定的v2@JayadrathaMondal这个问题仍然悬而未决。此问题是否有任何更新?最后一次回复是在三月份,到目前为止,我还没有读到他们正在积极尝试解决这个问题的任何消息。
var upload = multer({
  storage: storage,
  limits: { fileSize: maxSize }
}).single('bestand');