2015-10-17 2 views
1

Lors du téléchargement de fichier, je veux valider la taille du fichier, m'assurer que le fichier téléchargé est une image réelle et enfin valider qu'un titre a été écrit pour l'image. Mais ce code ne fonctionne pas. Que devrais-je faire?Ajout de logique/validation à multer dans node.js (express)

var multer = require('multer'), 
    upload = multer({ 
      dest: 'uploads/', 
      onFileUploadStart: function(file, req, res){ 
       if(file.size > 1000000) { 
        res.send("Maximum picture size is 1 MB"); 
        return false; 
       } 
       if(req.body.postname === ''){ 
        res.send("Enter a title name for your post"); 
        return false; 
       } 
       if(file.mimetype !== 'image/png' && file.mimetype !== 'image/jpg' && file.mimetype !== 'image/jpeg'){ 
        res.send("Supported image files are jpeg, jpg, and png"); 
        return false; 
       } 
      } 
     }); 

Et c'est la route qui obtient la demande à travers le formulaire.

router.post('/uploadpost', upload.single('image'), function(req, res){ 
fs.rename(req.file.path, req.file.destination + req.file.originalname, function(err){ 
if(err){ 
    throw err; 
} 
}); 

var postObj = { 
    Title : req.body.postname, 
    Img_path : req.file.destination + req.file.originalname 
} 


var query = connection.query('INSERT INTO posts SET ?', postObj, function(err, result){ 
    if(err){ 
     throw err; 
    } 
}); 

Répondre

1

Le middleware multer a toujours eu une documentation de l'API assez vague, mais après quelques recherches, je trouve qu'il utilise busboybehind the scenes et qu'il l'objet tuyaux option limits à Busboy. Pour résumer, il n'y a pas d'option onFileUploadStart, mais il y a une propriété limits dans l'objet options que vous pouvez définir. Maintenant, si je comprends tout correctement, vous pourriez faire avec ceci:

var multer = require('multer'); 
    upload = multer({ 
     dest: 'upload/', 
     limits: { 
     fileSize: 1000000 
     } 
    }); 

Si vous avez besoin de plus d'options de configuration de l'objet limits, il y a la documentation disponible sur Busboy's GitHub Repo

Hope this helps!