# 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 ```bash 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) ```bash GET http://localhost:8080/usuaria/80 ``` Response: ```json { "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): ```javascript 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: ```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: ```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 ```