¿Cómo puedo usar los datos de envío relacionados con el pase de imágenes al servidor usando multer antes de cargarlos en el disco? ¿Es posible? si no, por favor dame otra solución.
Quiero verificar el tamaño del archivo, debe tener una resolución de al menos 4mp, si tiene menos, las imágenes no deben cargarse y enviar el mensaje de error
exports.uploadimg=(req,res,next)=>{ uploadphoto(req, res, (err) => { if (err) { res.render("upload") } else { res.send("photo uloaded") } })
Supongo que tiene algún middleware multiparte (por ejemplo , connect-multiparty ) carga útil de solicitud de lectura para solicitudes multipart/form-data
.
Este middleware le habría proporcionado un objeto de files
en el objeto de request
( request.files
). Las propiedades del objeto de files
son claves para cada campo de carga de archivos. El valor de cada una de estas propiedades puede ser un objeto (carga de un solo archivo) o una matriz (carga de varios archivos). Cada uno de estos objetos anidados dentro del objeto de files
tiene propiedades que describen el archivo real cargado y le permite ejecutar comprobaciones como mejor le parezca en un siguiente middleware.
// router declarations const {Router} = require('express'); const multipart = require('connect-multipart'); const multipartMiddleware = multipart(); const validateFileSize = (file) => { /* Each file has the following property: fieldName - same as name - the field name for this file originalFilename - the filename that the user reports for the file path - the absolute path of the uploaded file on disk headers - the HTTP headers that were sent along with this file size - size of the file in bytes */ // check against file size if (file.size < 4 * 1024 * 1024) throw new Error('File is too small'); } const validateImageMiddleware = (req, res, next) => { // say we expected an upload field with key "productImage" const { files: { productImage } } = req; const isMultiple = Array.isArray(productImage); if (isMultiple) { productImage.forEach(validateFileSize); } else { validateFileSize(productImage); } // if we got here, the files were valid so we go to next handler next(); }; const myRouter = Router(); myRouter.post('/expect-file', multipartMiddleware, validateImageMiddleware, (req, res) => { // do whatever you want to do res.send('Success'); });