- 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
3.2 KiB
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
imgdebyte[]aString - 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(): ConvierteString(Base64) →byte[]toDto(): Conviertebyte[]→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
- Base64 Válido: La cadena debe ser Base64 válido. Si no lo es, se guardará como
null. - Imagen Opcional: Si no envías el campo
imgo esnull, se almacenará comonull. - 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
- Invalid Base64: Si envías una cadena que no sea Base64 válido, se ignorará y se guardará como
null. - Null String: Si el campo
imgesnull, se guardará comonullen 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