Validar Subida de Archivo
Subir un archivo en Laravel a través de un formulario es algo muy sencillo, sin embargo la implementación básica no es suficiente, en una aplicación de la vida real, generalmente necesitamos limitar lo que puede subir el usuario ya sea por medidas de seguridad o debido a que nuestra aplicación así lo exige.
Como este proceso es tan necesario, Laravel nos ofrece algunas herramientas con las cuales podemos hacer las validaciones así sean archivos, por lo que podemos incorporar más complementos a nuestra lógica de desarrollo, con ello hacer una mejor aplicación.
Para realizar estas validaciones podemos utilizar la clase Validator que nos ofrece Laravel, con dicha clase podemos construir las validaciones tanto de tipo e inclusive de tamaño de archivo.
Generar la Ruta
Para generar la ruta debemos modificar el archivo routes.php en nuestra aplicación Laravel estándar, debemos colocar algo similar a lo que vemos en el siguiente ejemplo:
Como vemos recibimos una acción por el método GET y enviamos como respuesta la generación de la vista de nuestro formulario.
Generar el Formulario
Debemos ahora crear nuestro formulario, todo es como un formulario normal de subir archivos, a excepción que vamos a crear la parte donde debemos recibir los errores en caso que nuestro archivo no cumpla con las validaciones necesarias, veamos en el siguiente ejemplo el código que debemos tener.
Como vemos hemos destinado un bucle foreach para recorrer la variable $messages si recibimos un error de validación, de resto la construcción del formulario es bastante estándar.
Generar la Validación
Para validar vamos a generar una nueva ruta, dentro de esta vamos a construir una variable con una cantidad de reglas, en este caso con los mime types permitidos y luego con la clase Validator tomamos los datos enviados por el formulario y preguntamos si cumple con las reglas, de hacerlo podemos continuar con nuestro proceso, en caso de no hacerlo debemos retornar el error a la vista del formulario para que el usuario rectifique.
En caso que no falle la validación vamos a mover el archivo a la ubicación final en nuestro servidor y enviamos un mensaje de éxito. Veamos a continuación esta ruta que realizará todo lo descrito.
Aquí vemos inclusive que en el set de reglas colocamos un valor max: 1000, esto nos indica que el archivo debe tener un máximo de tamaño de 1 MB, con lo que también podremos cuidar el espacio y los recursos de nuestro servidor.