ExpressJS es un marco minimalista y flexible para Node.js que proporciona un sólido conjunto de funciones para crear aplicaciones web y móviles. Una de las características más poderosas que ofrece ExpressJS es la capacidad de definir y trabajar con rutas. En este capítulo, nos centraremos en cómo trabajar con cargas de archivos en rutas usando ExpressJS.
Trabajar con cargas de archivos es una tarea común en las aplicaciones web. Ya sea que se trate de permitir a los usuarios cargar imágenes de perfil, documentos o cualquier otro tipo de archivo, en algún momento tendrás que ocuparte de la carga de archivos. Afortunadamente, ExpressJS hace que esto sea relativamente sencillo.
Configuración del middleware
Antes de que podamos comenzar a aceptar cargas de archivos, necesitamos configurar algún middleware para procesarlos. El middleware es una función que tiene acceso al objeto de solicitud (req), al objeto de respuesta (res) y a la siguiente función de middleware en el ciclo de solicitud/respuesta de la aplicación.
Para manejar la carga de archivos, usaremos un paquete llamado 'multer'. Multer es un middleware de node.js para manejar 'multipart/form-data' que se utiliza para cargar archivos. Es muy fácil de usar y está bien documentado. Para comenzar, necesitas instalarlo en tu proyecto:
instalación npm --guardar mult
Una vez instalado, puedes solicitarlo en tu aplicación y configurar una ubicación para almacenar los archivos subidos:
const multer = requerir('multer') carga constante = multer({ destino: 'cargas/' })
Aquí le decimos a Multer que almacene los archivos cargados en la carpeta 'uploads' de nuestro directorio raíz.
Definición de la ruta
Con Multer configurado, ahora podemos definir una ruta para aceptar cargas de archivos. Definamos una ruta POST en '/upload' que acepte un solo archivo:
app.post('/upload', upload.single('archivo'), (req, res) => { res.send('Archivo enviado correctamente.') })
En la ruta anterior, 'upload.single('file')' es un middleware que procesa la carga. 'archivo' es el nombre del campo en el formulario que contiene el archivo. La función de devolución de llamada se llama después de que el archivo se haya cargado correctamente.
Trabajar con archivos cargados
Una vez cargado un archivo, puede acceder a los datos del archivo a través del objeto 'req.file'. Este objeto contiene información útil como el nombre del archivo original, el nombre del archivo en el servidor, el tipo de archivo y el tamaño del archivo.
Puedes utilizar esta información para validar el archivo, cambiarle el nombre, moverlo o hacer cualquier otra cosa que necesites. Aquí hay un ejemplo de cómo puedes cambiar el nombre del archivo usando el módulo 'fs' de Node.js:
constante fs = requerir('fs') app.post('/upload', upload.single('archivo'), (req, res) => { fs.rename(req.file.path, 'cargas/' + req.file.originalname, err => { si (err) devuelve res.send('Error al cambiar el nombre del archivo'). res.send('Archivo enviado correctamente y renombrado.') }) })
En este ejemplo, cambiaremos el nombre del archivo a su nombre original. Si hay un error al cambiar el nombre del archivo, enviamos un mensaje de error. De lo contrario, enviamos un mensaje de éxito.
Conclusión
Trabajar con cargas de archivos en ExpressJS es sencillo y directo. Con el middleware de Multer, puede aceptar fácilmente la carga de archivos, acceder a información sobre los archivos cargados y manipular esos archivos según sea necesario. Este es sólo un ejemplo básico de lo que puede hacer con la carga de archivos en ExpressJS. La capacidad de aceptar y procesar cargas de archivos es una habilidad esencial para cualquier desarrollador web y es solo una de las muchas características poderosas que ofrece ExpressJS.