59 Comó almacenar archivos en la BASE de DATOS desde el FORMULARIO con(LARAVEL y MYSQL)FULLSTACK
Duración: 7 minDescripción
💾 Lección 59: Almacenamiento de Archivos desde el Formulario y Corrección de Ruta
Esta lección avanzada aborda el problema crucial de cómo manejar la subida de archivos (imágenes) en Laravel, asegurando que el archivo se almacene correctamente en el servidor y que la ruta de acceso se guarde en la base de datos para su posterior visualización.
1. 🖼️ Solucionando el Almacenamiento de la Imagen [00:28]
El problema inicial era que la imagen del canal no se guardaba en el servidor ni se registraba la ruta correcta en la base de datos. Esto se soluciona implementando el método de almacenamiento de archivos de Laravel en el IptvController.
Lógica de Almacenamiento en store(): En lugar de intentar guardar el contenido binario del archivo directamente, se utiliza el método store() para delegar la subida al sistema de archivos de Laravel [01:29].
PHP
$iptv->imagen = $request->file('imagen')->store('canales', 'public');
- Resultado: El método devuelve el nombre encriptado del archivo y su ruta, la cual se guarda en el campo imagen de la base de datos [03:08].
2. 📍 Redirección y Notificación de Éxito [03:34]
Una vez que el canal es registrado exitosamente, el usuario debe ser redirigido al listado para ver el resultado, recibiendo una confirmación.
- Redirección: Se utiliza el helper return redirect()->route() o return redirect()->to() para enviar al administrador de vuelta al listado de canales (/admin/iptvs) [04:03].
- Mensaje de Éxito: Se utiliza el método with() para adjuntar un mensaje de sesión (Alert) que notifica al usuario que "se registró el canal de IPTV de la manera correcta" [04:10].
3. 🎨 Visualización Elegante de Imágenes en la Vista index [05:07]
Para que las imágenes se muestren correctamente en la tabla del listado, es necesario construir la URL completa de forma correcta.
- Problema: El navegador no encuentra la imagen porque la ruta guardada en la base de datos no es una URL completa (ej., solo guarda canales/archivo.jpg) [05:35].
- Solución en index.blade.php: Se corrige el source (src) de la etiqueta <img> utilizando el helper de Laravel asset() para generar la URL pública desde la carpeta storage [05:58].
| Componente de URL | Función Laravel | Ejemplo |
|---|---|---|
| URL Base Pública | asset('storage/') | http://localhost/public/storage/ |
| Ruta Almacenada | $iptv->imagen | canales/abc1234.jpg |
| Resultado | asset('storage/' . $iptv->imagen) | http://localhost/public/storage/canales/abc1234.jpg [06:26] |
Este ajuste permite que la imagen del canal se muestre correctamente, completando el ciclo del registro (Create y Read) con la subida de archivos [06:48].
Lecciones
Apoya este proyecto
Si te gusta nuestro contenido, ¡apóyanos con una donación!
Donar por Airtm Donar por Binance¡Gracias por tu apoyo! ❤️