Domina Cursor, el editor de código con IA que multiplica tu productividad como desarrollador.

0 de 35 lecciones completas (0%)

PROYECTO: TIENDA DE LIBROS ELECTRÓNICOS FULL STACK

Carga de PDF e Imágenes para Creación de Libros

En esta lección aprenderemos a implementar la funcionalidad de carga de archivos PDF e imágenes para la creación de libros en nuestra aplicación. Utilizaremos Cloudinary como servicio de almacenamiento en la nube.

1. Configuración de Endpoints

Creación de Endpoints para Libros

Primero, vamos a configurar todos los endpoints necesarios para manejar los libros:

  1. Crear el archivo de endpoints: books-endpoints.md
  2. Endpoint principal: POST /books para crear un nuevo libro
  3. Configurar Postman con la URL correcta y método POST

2. Manejo de Errores

Implementación de Validación

Al intentar crear un libro inicialmente, podemos encontrar errores como:

  • «uploadedBy is required» (Campo ‘subido por’ requerido)
  • «pdf is required» (PDF requerido)

Solución de Errores

Para resolver estos problemas:

  1. Revisar el controlador de libros (books-controller.js)
  2. Implementar manejo de errores similar al controlador de usuarios
  3. Agregar validaciones necesarias para todos los campos requeridos
javascript// Ejemplo de manejo de errores
if (!req.body.title) {
  return res.status(400).json({ error: 'El título es requerido' });
}

3. Configuración de Cloudinary

Instalación de Dependencias

Necesitamos instalar los paquetes necesarios para Cloudinary:

bashnpm install cloudinary multer-storage-cloudinary

Variables de Entorno

Agregar las siguientes variables al archivo .env:

envCLOUDINARY_CLOUD_NAME=tu_cloud_name
CLOUDINARY_API_KEY=tu_api_key
CLOUDINARY_API_SECRET=tu_api_secret

Obtener Credenciales de Cloudinary

  1. Acceder a Cloudinary: Ir a cloudinary.com
  2. Iniciar sesión en tu cuenta
  3. Copiar Cloud Name desde el dashboard
  4. Obtener API Key y API Secret desde la sección de APIs

4. Implementación de Carga de Archivos

Configuración del Controlador

Modificar el controlador de libros para:

  • Aceptar múltiples formatos: PDF, DOC, DOCX
  • Manejar imagen de portada: JPG, PNG
  • Integrar con Cloudinary para almacenamiento

Campos del Formulario

El formulario debe incluir:

  • title: Título del libro
  • author: Autor
  • description: Descripción
  • category: Categoría (ej: ficción)
  • price: Precio (ej: 9.99)
  • tags: Etiquetas (como array)
  • pdf: Archivo PDF (file)
  • coverImage: Imagen de portada (file)

5. Pruebas con Postman

Configuración de la Petición

  1. Método: POST
  2. URL: http://localhost:3000/books
  3. Content-Type: multipart/form-data
  4. Body: Usar «form-data» en lugar de «raw»

Estructura de Datos

title: "Título del libro"
author: "Nombre del autor"
description: "Descripción del libro"
category: "fiction"
price: 9.99
tags: ["aventura", "drama"]
pdf: [seleccionar archivo PDF]
coverImage: [seleccionar archivo de imagen]

6. Solución de Problemas Comunes

Error: «upload.single is not a function»

  • Causa: Configuración incorrecta de multer
  • Solución: Verificar la importación y configuración de multer-storage-cloudinary

Error: «uploadedBy is required»

  • Causa: Falta el ID del usuario que sube el archivo
  • Solución: Asegurar que el middleware de autenticación agregue el usuario a la petición

Archivos de Prueba

Para testing, puedes:

  • Buscar «sample PDF download» en Google
  • Usar cualquier imagen como portada de prueba
  • Verificar que los archivos se suban correctamente a Cloudinary

7. Verificación del Resultado

Confirmación de Carga Exitosa

Una vez configurado correctamente:

  1. Los archivos se suben a Cloudinary
  2. Se generan URLs públicas para acceso
  3. Los datos se guardan en la base de datos
  4. Se puede acceder a los archivos subidos mediante las URLs generadas

URLs de Cloudinary

  • PDF: URL directa para descarga/visualización
  • Imagen de portada: URL optimizada para mostrar en la interfaz

Conclusión

Con esta implementación tenemos un sistema completo de carga de archivos que:

  • ✅ Maneja PDFs y documentos
  • ✅ Procesa imágenes de portada
  • ✅ Utiliza Cloudinary para almacenamiento seguro
  • ✅ Incluye validación y manejo de errores
  • ✅ Es fácil de probar con Postman

La funcionalidad está lista para integrarse con el frontend de la aplicación.

Resumen de privacidad
Logo JeroCuevas.com

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies de terceros

Esta web utiliza Google Analytics para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar esta cookie activa nos permite mejorar nuestra web.