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
This commit is contained in:
140
BASE64_IMAGE_GUIDE.md
Normal file
140
BASE64_IMAGE_GUIDE.md
Normal file
@@ -0,0 +1,140 @@
|
||||
# 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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user