Verificar que la carga de archivos funciona correctamente no solo depende del testing automatizado. Probar desde el navegador permite confirmar de forma visual que las imágenes se almacenan donde esperamos, y para eso necesitamos un formulario HTML bien configurado dentro de Laravel.
¿Cómo crear un formulario para subir archivos en Laravel?
Antes de diseñar el formulario, es importante confirmar que la ruta está disponible. En el archivo de rutas web.php, ya se había definido una ruta profile que retorna una vista y otra que recibe la petición por método POST [0:47]. Con eso claro, el siguiente paso es construir el formulario en la vista correspondiente.
El formulario necesita tres elementos esenciales:
- Acción y método: la etiqueta
<form> apunta a la ruta profile con el método post.
- Token CSRF: Laravel exige este token para validar que el formulario es seguro y legítimo [1:24].
- Atributo enctype: se debe agregar
enctype="multipart/form-data" para que el navegador envíe el archivo como binario y no como texto plano [1:32].
El atributo enctype con valor multipart/form-data es indispensable cuando se trabaja con carga de archivos. Sin él, la imagen llegaría al servidor como una cadena de texto inutilizable.
¿Qué campos necesita el formulario?
Dentro del formulario se colocan dos campos principales:
- Un
<input type="file" name="foto"> que permite al usuario seleccionar la imagen [1:50].
- Un
<input type="submit" value="Enviar"> que ejecuta la petición.
El atributo name="foto" debe coincidir exactamente con el nombre del campo que el controlador espera recibir en el servidor [1:57]. Esta correspondencia entre el nombre del campo en el formulario y la validación en el backend es fundamental para que Laravel procese el archivo correctamente.
¿Dónde se almacenan las imágenes subidas?
Al presionar el botón enviar, el navegador ejecuta la petición POST hacia la ruta configurada. Laravel recibe el archivo y lo guarda en el disco de almacenamiento [2:25].
Para verificar que todo funcionó, basta con revisar la estructura de carpetas del proyecto:
- Las imágenes subidas desde el navegador se almacenan en
storage/app/ dentro de la carpeta de perfiles configurada [2:33].
- Las imágenes generadas durante el testing se guardan en una carpeta separada dentro de
storage/framework/ [2:47].
Esta separación es importante porque permite que los tests automatizados no interfieran con los archivos reales de la aplicación.
¿Por qué combinar testing y pruebas manuales en el navegador?
El testing automatizado ya había confirmado que el código de carga de archivos funcionaba correctamente. Sin embargo, la prueba desde el navegador aporta una verificación visual que complementa al test unitario [2:55].
- El test garantiza que la lógica del servidor procesa y almacena el archivo.
- La prueba manual confirma que el formulario HTML, el token CSRF, el enctype y la ruta trabajan en conjunto sin errores.
Esta combinación brinda mayor confianza en que la funcionalidad está lista para producción. El código del controlador ya existía; lo único que se necesitó fue diseñar el formulario con los atributos correctos y enviar la imagen.
Si estás implementando carga de archivos en tu proyecto Laravel, comparte qué tipo de validaciones adicionales aplicas en el servidor para controlar el tamaño o formato de las imágenes.