📂 Subida y manejo de archivos
Aprende a subir archivos de forma segura en Laravel
Laravel facilita la subida, almacenamiento y gestión de archivos (imágenes, documentos, etc.) mediante su clase Storage y los métodos de los request. En esta lección veremos cómo crear formularios Blade, validar archivos y almacenarlos correctamente.
⚙️ Formulario para subir archivos en Blade
Para subir archivos necesitamos un formulario con enctype="multipart/form-data" y el token CSRF:
<form action="{{ route('archivos.store') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="mb-3">
<label for="archivo" class="form-label">Selecciona un archivo:</label>
<input type="file" name="archivo" id="archivo" class="form-control" required>
</div>
<button type="submit" class="btn btn-success">Subir archivo</button>
</form>
🧠 Validación de archivos en el controlador
En el controlador podemos validar el tipo de archivo, tamaño máximo y extensión permitida:
public function store(Request $request)
{
$validated = $request->validate([
'archivo' => 'required|file|mimes:jpg,png,pdf,docx|max:2048', // máximo 2MB
]);
$ruta = $request->file('archivo')->store('uploads', 'public');
return back()->with('success', 'Archivo subido correctamente: ' . $ruta);
}
📂 Guardando archivos en Storage
Laravel utiliza discos configurables en config/filesystems.php.
Para acceder a los archivos públicamente, podemos enlazar storage a public/storage usando:
php artisan storage:link
Luego podemos mostrar el archivo subido en Blade así:
<img src="{{ asset('storage/' . $ruta) }}" alt="Archivo subido" class="img-fluid">
✅ Consejo: Valida siempre los archivos para evitar subir contenido malicioso y limita el tamaño máximo.
📚 En resumen:
- Usa
enctype="multipart/form-data"en el formulario Blade. - Incluye siempre
@csrf. - Valida tipo, tamaño y extensión de los archivos en el controlador.
- Almacena los archivos con
store()en un disco seguro. - Enlaza
storageapublic/storagepara acceso público si es necesario.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias