Cómo subir archivos en Laravel correctamente (Guía profesional 2026)
La subida de archivos es una funcionalidad crítica en la mayoría de aplicaciones web modernas: imágenes de perfil, documentos, comprobantes, adjuntos o recursos multimedia. Aunque puede parecer una tarea sencilla, una mala implementación de uploads es una de las principales causas de problemas de seguridad, rendimiento y mantenimiento.
Laravel ofrece un sistema robusto, probado en producción y alineado con buenas prácticas para subir archivos de forma segura, escalable y profesional. En esta guía aprenderás cómo hacerlo correctamente, con un enfoque realista y actualizado a 2026.
Por qué es importante gestionar bien los uploads en Laravel
Desde la experiencia en proyectos reales, los errores más comunes en uploads suelen ser:
- Falta de validación
- Exposición de archivos sensibles
- Archivos huérfanos en el servidor
- Problemas de permisos
- Crecimiento descontrolado del almacenamiento
Laravel soluciona estos problemas gracias a:
- Su sistema Filesystem
- Validaciones avanzadas
- Abstracción de almacenamiento (local, S3, etc.)
- Integración limpia con base de datos
Flujo profesional de subida de archivos
Un flujo correcto de uploads en Laravel debería seguir estos pasos:
- Recepción del archivo
- Validación estricta
- Almacenamiento seguro
- (Opcional) Registro en base de datos
- Acceso controlado
- Eliminación y mantenimiento
Este artículo cubre cada punto con ejemplos claros.
1. Crear el formulario de subida de archivos
El formulario debe cumplir con el estándar HTTP para uploads:
<form action="{{ route('upload.store') }}" method="POST" enctype="multipart/form-data">
@csrf
<input type="file" name="archivo" required>
<button type="submit">Subir archivo</button>
</form>Experiencia práctica:
Uno de los errores más frecuentes es olvidar
enctype="multipart/form-data", lo que provoca que el archivo nunca llegue al servidor.
2. Validación correcta de archivos (seguridad primero)
Nunca confíes en el archivo que envía el usuario, aunque venga de un formulario controlado.
$request->validate([
'archivo' => [
'required',
'file',
'mimes:jpg,jpeg,png,pdf',
'max:2048'
]
]);Buenas prácticas reales:
- Define tipos MIME específicos
- Limita el tamaño máximo
- Evita aceptar extensiones ejecutables
- Valida siempre en backend
3. Guardar archivos en Laravel de forma segura
Laravel genera nombres únicos automáticamente, evitando colisiones:
$path = $request->file('archivo')->store('uploads');Por defecto, el archivo se guarda en:
storage/app/uploadsRecomendación profesional:
Nunca uses el nombre original del archivo como nombre final.
4. Organización profesional de carpetas
En proyectos reales, la organización es clave:
$path = $request->file('archivo')
->store('uploads/users/' . auth()->id(), 'public');Ejemplos de estructura:
uploads/
└── users/
└── 15/
└── documento.pdfEsto facilita:
- Auditoría
- Limpieza
- Escalabilidad
5. Archivos públicos vs privados
Laravel trabaja con discos configurados en config/filesystems.php.
Guardar archivos públicos:
$path = $request->file('archivo')->store('uploads', 'public');Crear el enlace simbólico:
php artisan storage:linkEsto es estándar en producción y hosting compartido.
6. Mostrar archivos subidos correctamente
Para archivos públicos:
<img src="{{ asset('storage/' . $path) }}" alt="Archivo subido">Buenas prácticas UX y SEO:
- Usa siempre alt
- Optimiza imágenes antes de subirlas
- Controla permisos si el archivo no es público
7. Subida de múltiples archivos
Muy común en formularios avanzados:
<input type="file" name="archivos[]" multiple>foreach ($request->file('archivos') as $archivo) {
$archivo->store('uploads', 'public');
}Cada archivo se maneja como una instancia independiente, lo que reduce errores.
8. Guardar información del archivo en la base de datos
En aplicaciones profesionales, el archivo debe tener un registro:
Archivo::create([
'ruta' => $path,
'user_id' => auth()->id()
]);Regla de oro:
Si el archivo ya no se usa, debe eliminarse.
- Valida siempre en backend
- Usa discos según el entorno
- Separa archivos públicos y privados
- Organiza por usuarios o módulos
- Implementa limpieza periódica
- Considera almacenamiento externo (S3) en producción
Errores comunes que debes evitar
- Aceptar cualquier tipo de archivo
- Guardar archivos sin validación
- Exponer rutas internas
- No eliminar archivos huérfanos
- Usar permisos incorrectos
Conclusión
Subir archivos en Laravel no es solo “guardar un archivo”. Es implementar un sistema seguro, mantenible y escalable. Laravel proporciona todas las herramientas necesarias para hacerlo correctamente, siguiendo estándares profesionales y buenas prácticas modernas.
Si desarrollas aplicaciones en PHP en 2026, dominar la gestión de uploads en Laravel es una habilidad esencial.