Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

142
Vistas
¿Manejo de errores en multer?

Para el manejo de errores, multer sugiere

 const multer = require('multer') const upload = multer().single('avatar') app.post('/profile', function (req, res) { upload(req, res, function (err) { if (err instanceof multer.MulterError) { // A Multer error occurred when uploading. } else if (err) { // An unknown error occurred when uploading. } // Everything went fine. }) })

Escribí un middleware personalizado para cargar diferentes tipos de archivos.

 const { check } = require("express-validator") const multer = require('multer') const mime = require('mime-types') const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') }, filename: function (req, file, cb) { const filename = Date.now()+"-"+file.originalname cb(null, filename) } }) const upload = multer({ storage: storage }) const uploadFile = (fieldname,filetypes,fileSize)=>{ return (req,res,next)=>{ let file = upload.single(fieldname) file(req,res,function(err){ if (err instanceof multer.MulterError) { req.fileError = { param: "image", msg: "Unable to process request" } return next() } else if (filetypes.includes(mime.extension(req.file.mimetype)) === false) { req.fileError = { param: "image", msg: `Only ${filetypes.toString()} allowed` } return next() } else if (req.file.size > fileSize) { req.fileError = { param: "image", msg: `File size should not exceed ${formatBytes(req.file.size)}` } return next() } }) } } course_validator = [ check("name") .trim() .isLength({min:3,max:100}) .withMessage("Course name should be between 3 to 100 characters") ] app.get("/create/post",uploadFile("image",["jpeg","jpg"],122880),(req,res)=>{ const errors = validationResult(req) if(!errors.isEmpty()){ return res.json({ status: false, error: req.fileError ? [...errors.array(),req.fileError] : errors.array() }) } })

Si no hay ningún error, solo necesito cargar el archivo en la carpeta de uploads . Cuando subo un archivo que no sea jpeg o jpg, recibo un mensaje de error que dice que solo se permiten jpeg, jpg. Esto es lo que necesito. Pero el problema es que el archivo también se uploads en la carpeta de carga.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Para los mensajes de error personalizados, puede pasar por este controlador aquí. Estoy verificando el tipo de archivo al cargar una imagen y en el controlador, si no hay un archivo seleccionado en ese momento, estoy enviando un mensaje personalizado con simple si la condición después de pasar todo si la imagen y los productos se guardarán en DB

 exports.postProduct = (req, res, next) => { const title = req.body.title; const image = req.file; const price = req.body.price; const description = req.body.description; if (!image) { return res.status(422).render("admin/add-product", { pageTitle: "Add Product", path: "/adminproducts", hasError: true, product: { title: title, price: price, description: description, }, errorMessage: "Atteched file is not an image!!!", validationErrors: [], }); } const imageUrl = image.path; const product = new Product({ title: title, imageUrl: imageUrl, price: price, description: description, userId: req.user, }); product .save() .then((results) => { console.log("Product Created Successfully"); res.redirect("/admin/products"); }) .catch((err) => { console.log(err); }); };
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda