馃搨 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