Multer es un middleware para manejar los datos enviados desde el formato multipart/form-data
que es usado principalmente para subir archivos. Multer agregar un objeto body
y un archivo o objetos de archivo al objeto de petición (request
). El objeto body contiene los valores de los campo de texto del formulario el archivo o los archivos que han sido cargados a través del formulario.
npm install express multer
const multer = require('multer');
const upload = multer({dest: 'uploads/'});
La propiedad dest es la ruta donde el archivo será guardado.
Creamos el endpoint para poder subir un archivo.
app.post('/single', upload.single('profile'), (req, res) => {
try {
res.send(req.file);
}catch(err) {
res.status(400).send('message': err.message);
}
});
El nombre del campo del formulario debe ser el mismo valor que pasamos como argumento para upload.single
Si recibes una respuesta satisfactoria por parte del servidor tendrás que revisar el directorio uploads para encontrar el archivo pero éste no tendrá una extensión; para resolverlo tendremos que usar la opción storage
en lugar de dest
.
También usaremos Multer con la función DiskStorage y MemoryStorage para poder tener un mejor control de lo que cargamos al servidor.
const storage = multer.diskStorage ({
destination: (req, file, cb) => {
cb(null, './uploads');
},
filename: (req, file, cb) => {
cb(null , file.originalname);
}
});