39 Comó SUBIR archivos del FORMULARIO WEB a SERVIDOR (LARAVELyMYSQL)FULLSTACK

Duración: 9 min
Módulo: 🖼️ Módulo de Almacenamiento y Archivos Lección 1 de 5

Descripción

🚀 Lección 39: Cómo Subir Archivos del Formulario Web al Servidor con Laravel

Esta lección avanzada resuelve el problema del almacenamiento físico de archivos, que es el paso final en la función de Creación (Create) de la plataforma de películas. El video explica cómo utilizar el sistema de File Storage de Laravel para tomar la imagen seleccionada y guardarla en el proyecto, a diferencia de simplemente guardar su nombre como texto en la base de datos.

1. 📂 Preparación del Sistema de Almacenamiento (Storage Link) [01:22]

Antes de subir archivos, se requiere un paso de configuración para hacer pública la carpeta de almacenamiento de Laravel.

  • Problema de Acceso: Por defecto, los archivos subidos se guardan en la carpeta storage/app, que no es accesible directamente desde la web.
  • Solución: Se debe ejecutar el comando de Artisan: php artisan storage:link [02:01].
  • Resultado: Este comando crea un enlace simbólico (public/storage) que apunta a la carpeta privada de almacenamiento (storage/app/public), haciendo que los archivos sean accesibles al navegador sin comprometer la seguridad de otras carpetas.

2. 📝 Configuración del Formulario (Etiqueta <form>) [03:22]

Para que Laravel pueda procesar un archivo binario (como una imagen), el formulario HTML debe incluir un atributo específico:

  • Atributo enctype: Es obligatorio añadir enctype="multipart/form-data" a la etiqueta <form> para permitir el envío de archivos [03:32].

3. 💾 Lógica de Subida y Almacenamiento en el Backend [03:50]

Se modifica el método store() en el controlador para manejar el archivo de imagen de manera segura y eficiente utilizando la facade Storage de Laravel.

  • Identificación del Archivo: Se utiliza el helper file() del objeto $request para acceder al archivo subido por el campo del formulario (image_p) [04:16].
  • Método store(): La función store() de Laravel se utiliza para guardar el archivo y obtener su ruta.
    • Sintaxis: $request->file('nombre_campo')->store('directorio', 'public')
    • Directorio: Se especifica la carpeta de destino dentro de storage/app/public, por ejemplo: portadas/uploads [04:49].
    • Opciones: Se añade la opción 'public' para indicar que el archivo debe ser accesible públicamente.
  • Resultado de la Base de Datos: El método store() devuelve automáticamente la ruta completa del archivo (ej., portadas/uploads/nombre_encriptado.jpg) y este valor es el que se guarda en la columna image_p de la base de datos [05:50].
  • Generación de Nombre Único: Laravel encripta automáticamente el nombre del archivo antes de guardarlo (ej., upload_ejemplo.jpg se convierte en asdf123.jpg), lo que previene la sobreescritura de archivos con nombres duplicados [08:00].

4. 🌐 Subida a Directorios Específicos (Opcional) [06:33]

Se demuestra la capacidad de Laravel para crear automáticamente directorios específicos basados en los datos del formulario, como el nombre de usuario o un ID, para organizar los archivos [06:40].

  • Próximo Paso: La siguiente lección se centrará en redireccionar al usuario después del registro exitoso y mostrar la imagen subida en la vista de listado [08:47].