2017-10-13 6 views
-1

J'utilise ce code "multer" pour télécharger des fichiers sur mon serveur. Même si j'ai la limite de taille de fichier, il suffit de l'ignorer et de télécharger le fichier.Nodejs - Récupérer l'erreur de taille de fichier avec multer

const multer = require("multer"); 
const path = require("path"); 
const storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, "uploads/"); 
    }, 
    limits: { 
     fileSize: 1024 * 1024 
    } 
}); 

const upload = multer(
{ 
    storage: storage 
} 
).single("file"); 

router.post("/files/postfile", function (req: any, res: any, next) { 

    upload(req, res, function (err) { 
     if (err) { 
      return res.json({error: err}); 
     } 
     return res.json({success: true}); 
    }); 

}); 

Répondre

1
const upload = multer({ 
    storage: storage, 
    limits: { 
     fileSize: 1024 * 1024 
    } 
}).single("file"); 

Retirez le limits de multer.diskStorage

+0

Merci ... J'attends 5 minutes (règles de stackoverflow) pour vous donner le contrôle de votre réponse .... – Michalis

+0

Je suis contente d'aider :) –

0

Votre code est très inefficace.

const multer = require("multer"); 
const path = require("path"); 
const storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, "uploads/"); 
    } 
}); 

const upload = multer({ 
    storage: storage, 
    limits: { 
     fileSize: 1024 * 1024 
    } 
}); 

router.post("/files/postfile", upload.single("file"); function (req: any, res: any, next) { 
    // . . . . code . . . . 

}); 

En utilisant le middleware, vous pouvez écrire du code efficace Je recommande cette méthode. et Si l'attribut filename est utilisé lorsque l'appel de multer.diskStorage(), vous pouvez charger un nom de fichier.

destination: function (req, file, cb) { 
     cb(null, "uploads/"); 
    }, 
    filename: function(req, file, cb){ 
     cb(null, 'unique_name.jpg'); # example: timestamp, utc, etc 
    }, 
    limits: { 
     fileSize: 1024 * 1024 
    } 

Le nom de fichier peut être dupliqué.

+0

et comment puis-je attraper l'erreur dans mon itinéraire ? J'ai d'abord utilisé le code comme vous, mais je ne pouvais pas trouver un moyen d'attraper l'erreur à l'intérieur de la route – Michalis

+0

Je prends cet exemple sur le site officiel pour les erreurs de capture. https://github.com/expressjs/multer#error-handling – Michalis

+0

voulez-vous le traitement des erreurs? –