web-dev-qa-db-fra.com

Comment limiter la taille du fichier lors du téléchargement avec multer?

Je fais un simple système de téléchargement de fichiers avec 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);
    });
});

Tout cela fonctionne bien et le fichier est téléchargé. La seule chose qui ne fonctionne pas est la limite de la taille maximale. Je l'ai fait pour qu'onfileupload démarre, la taille du fichier est vérifiée et si elle est trop grande, elle retournera false. Mais le fichier est tout simplement téléchargé.

Il semble que onFileUploadStart ne fasse rien du tout. J'ai essayé de console.log quelque chose dedans, mais rien.

Qu'est-ce que je fais mal? Comment puis-je limiter la taille du fichier lors du téléchargement avec multer?

17
Merijn de Klerk

Il n'y a pas de onFileUploadStart avec la nouvelle API multer. Si vous souhaitez limiter la taille du fichier, vous devez plutôt ajouter limits: { fileSize: maxSize } À l'objet passé à multer():

var upload = multer({
  storage: storage,
  limits: { fileSize: maxSize }
}).single('bestand');
39
mscdex