Files
ProyectoIdiomasSpringBoot/BASE64_IMAGE_GUIDE.md
h4ckx0r 9e97dcf6ee Add initial project structure with user management and Base64 image support
- Create application properties for database configuration
- Implement user entity and DTO with Base64 image handling
- Add user controller for CRUD operations
- Introduce Base64 converter utility for image encoding/decoding
- Set up Maven wrapper and project dependencies
- Configure .gitignore and .gitattributes for environment consistency
2026-01-21 10:12:54 +01:00

3.2 KiB

Guía: Crear Usuaria con Imagen en Base64

Descripción General

Ahora puedes crear una usuaria con una imagen enviando la imagen como una cadena Base64 en el JSON del POST request. El sistema se encargará de convertir automáticamente el Base64 a bytes para almacenarla en la base de datos.

Cambios Realizados

1. UsuariaDto.java

  • Cambié el campo img de byte[] a String
  • Ahora acepta Base64 en lugar de bytes

2. Base64Converter.java (Nuevo)

  • Clase utilitaria con métodos para convertir entre Base64 y bytes
  • Incluye manejo de errores para Base64 inválido

3. UsuariaMapper.java

  • Integración con MapStruct para convertir automáticamente:
    • toEntity(): Convierte String (Base64) → byte[]
    • toDto(): Convierte byte[]String (Base64)
    • partialUpdate(): Maneja actualizaciones parciales

Cómo Usar

Crear Usuaria con Imagen

POST http://localhost:8080/usuaria
Content-Type: application/json

{
  "id": 80,
  "fechaElim": null,
  "fechaNac": "2026-12-08",
  "img": "kjhadfjklaghshjldfgajhsdf==",
  "nombre": "pasda",
  "pass": "asdad",
  "username": "asdad",
  "idTipoUsuario": null
}

Obtener Usuaria (La imagen se devuelve en Base64)

GET http://localhost:8080/usuaria/80

Response:

{
  "id": 80,
  "fechaElim": null,
  "fechaNac": "2026-12-08",
  "img": "kjhadfjklaghshjldfgajhsdf==",
  "nombre": "pasda",
  "pass": "asdad",
  "username": "asdad",
  "idTipoUsuario": null
}

Notas Importantes

  1. Base64 Válido: La cadena debe ser Base64 válido. Si no lo es, se guardará como null.
  2. Imagen Opcional: Si no envías el campo img o es null, se almacenará como null.
  3. Conversión Automática: Todo ocurre automáticamente gracias a MapStruct. No necesitas hacer nada más.

Generación de Base64

Para generar una cadena Base64 de una imagen, puedes usar:

En JavaScript (Frontend):

const file = document.getElementById('imageInput').files[0];
const reader = new FileReader();
reader.onload = (e) => {
  const base64String = e.target.result.split(',')[1];
  // Usar base64String en el JSON
};
reader.readAsDataURL(file);

En Java:

import java.util.Base64;
import java.nio.file.Files;
import java.nio.file.Paths;

byte[] imageBytes = Files.readAllBytes(Paths.get("path/to/image.png"));
String base64String = Base64.getEncoder().encodeToString(imageBytes);

En Python:

import base64

with open('image.png', 'rb') as f:
    base64_string = base64.b64encode(f.read()).decode('utf-8')

Errores Comunes

  1. Invalid Base64: Si envías una cadena que no sea Base64 válido, se ignorará y se guardará como null.
  2. Null String: Si el campo img es null, se guardará como null en la base de datos.

Arquitectura de la Solución

UsuariaController (POST)
    ↓
UsuariaDto (img: String)
    ↓
UsuariaMapper.toEntity()
    ↓
Base64Converter.base64ToBytes()
    ↓
Usuaria Entity (img: byte[])
    ↓
UsuariaRepository.save()
    ↓
Base de Datos (BLOB)

Cuando obtienes la usuaria:

Base de Datos (BLOB)
    ↓
Usuaria Entity (img: byte[])
    ↓
UsuariaMapper.toDto()
    ↓
Base64Converter.bytesToBase64()
    ↓
UsuariaDto (img: String)
    ↓
Response JSON