Chuck's Academy

Node.js

Manejo de Archivos y Subidas

El manejo de archivos es una tarea común en aplicaciones backend, desde la lectura y escritura de archivos en el servidor hasta la gestión de cargas de archivos de los usuarios. Node.js ofrece potentes herramientas para trabajar con archivos de manera eficiente. En este capítulo, aprenderemos cómo manejar archivos y cómo gestionar la carga de archivos en Node.js usando fs (file system) y multer.

Lectura y Escritura de Archivos en Node.js

Node.js incluye el módulo fs para trabajar con el sistema de archivos. Este módulo permite realizar operaciones como leer, escribir, eliminar y renombrar archivos en el servidor. Veamos cómo realizar algunas de las operaciones más comunes.

Lectura de Archivos

Para leer el contenido de un archivo, utilizamos el método fs.readFile. Aquí tienes un ejemplo:

javascript
"Este código utiliza el método 'readFile' del módulo 'fs' para leer el archivo 'example punto t x t'. El contenido del archivo se muestra en la consola, o si ocurre un error, se muestra el error."

Escritura de Archivos

Para escribir en un archivo, podemos usar fs.writeFile. Si el archivo no existe, será creado; si ya existe, su contenido será sobrescrito.

javascript
"Este código crea un archivo llamado 'example punto t x t' con el contenido 'Hello coma Node punto j s'. Si el archivo ya existe, su contenido será sobrescrito. Si hay un error, este será mostrado en la consola."

Eliminación de Archivos

Para eliminar un archivo, usamos fs.unlink:

javascript
"Este código elimina el archivo 'example punto t x t'. Si ocurre un error, lo mostramos en la consola."

Subida de Archivos en Node.js con Multer

multer es un middleware que facilita la gestión de cargas de archivos en Node.js. Con multer, podemos manejar archivos enviados a través de formularios HTML y almacenarlos en el servidor. Primero, instalemos el paquete:

bash
"Ejecuta 'npm espacio install espacio multer' para instalar la librería multer, que nos ayudará a manejar la carga de archivos en nuestra aplicación."

Configuración de Multer

Para manejar la carga de archivos, necesitamos configurar multer en nuestro servidor Express. Veamos cómo hacerlo:

javascript
"En este ejemplo, usamos multer para manejar la carga de un solo archivo. El archivo se almacena en la carpeta 'uploads'. La ruta post 'slash upload' recibe el archivo y devuelve un mensaje de éxito."

Subida de Múltiples Archivos

Si necesitamos permitir la subida de varios archivos al mismo tiempo, podemos usar upload.array() en lugar de upload.single():

javascript
"Aquí configuramos multer para manejar la subida de hasta cinco archivos a la vez, que se envían en el campo de formulario 'files'."

Almacenamiento Personalizado

Multer también permite configurar opciones de almacenamiento más avanzadas, como cambiar el nombre de los archivos y definir dónde se almacenarán. Veamos cómo configurar el almacenamiento personalizado:

javascript
"En este ejemplo, personalizamos el almacenamiento usando 'diskStorage'. Definimos la carpeta de destino y configuramos un nombre único para cada archivo usando un sufijo basado en la fecha y un número aleatorio."

Consideraciones de Seguridad al Manejar Archivos

El manejo de archivos puede introducir vulnerabilidades de seguridad si no se toman las medidas adecuadas. Aquí algunos consejos para mejorar la seguridad al manejar archivos en Node.js:

  • Validación del tipo de archivo: Asegúrate de validar el tipo de archivo que los usuarios pueden subir para evitar la ejecución de archivos maliciosos.

  • Tamaño de archivo: Establece un límite en el tamaño de los archivos que los usuarios pueden subir para evitar sobrecargar el servidor.

  • Nombre de archivos: Genera nombres únicos para los archivos subidos para evitar la sobrescritura de archivos existentes.

javascript
"Aquí añadimos validación para aceptar solo archivos PNG y JPEG, además de un límite de cinco megabytes en el tamaño del archivo."

Resumen

En este capítulo, hemos aprendido cómo manejar archivos en Node.js utilizando el módulo fs para leer, escribir y eliminar archivos, y cómo gestionar la subida de archivos utilizando el middleware multer. Estas habilidades son fundamentales para muchas aplicaciones modernas, desde el almacenamiento de imágenes hasta la gestión de documentos.


Pregúntame lo que sea