馃搨 Subida y manejo de archivos

馃搨 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 storage a public/storage para acceso p煤blico si es necesario.

Publicar un comentario

0 Comentarios