ClassicSidebar Layout

FileDrop

Universeller Drag-&-Drop- und Paste-Wrapper. Macht beliebige Kind-Komponenten zur Drop-Zone für Dateien und Bilder – per Drag & Drop oder Strg+V.

TextBox mit Datei-Drop (Below)

Dateien auf das Textfeld ziehen oder ins Feld klicken und Strg+V drücken. Bilder erscheinen als Thumbnails, andere Dateien als Chips unterhalb des Feldes.

EagerLoad – sofortiger Transfer (Standard)

EagerLoad="true" (Standard): Dateidaten werden unmittelbar nach dem Drop per Chunking übertragen. Während des Transfers ist ein Spinner am Chip / Thumbnail sichtbar.

EagerLoad="false" – manueller Transfer

EagerLoad="false": Dateien werden zunächst nur als Metadaten registriert – keine Bytes übertragen. Erst nach Klick auf „Jetzt übertragen" werden die Daten per Chunking vom Browser geholt.

Durchsuchen-Button

ShowBrowseButton="true" blendet einen Button ein der einen nativen Datei-Dialog öffnet – zusätzlich zu Drop und Strg+V. Optional: BrowseButtonText und BrowseMultiple.

Thumbnails & Chips Above

Mit ThumbnailPosition="Above" erscheinen Thumbnails und Chips oberhalb des Feldes.

Nur Bilder akzeptieren

AcceptFiles="false" – andere Dateitypen werden ignoriert, nur Bilder (image/*) werden angenommen.

Nur Nicht-Bild-Dateien akzeptieren

AcceptImages="false" – Bilder werden ignoriert, nur Dokumente, PDFs etc. werden angenommen.

TextArea als Drop-Zone

FileDrop funktioniert mit beliebigen Kind-Komponenten – hier mit einer TextArea.

Mehrere Felder in einer Drop-Zone

Eine FileDrop-Zone kann mehrere Kind-Elemente umschließen. Drop und Paste funktionieren in allen Feldern.

OnFilesChanged Callback

Über OnFilesChanged reagiert die Seite sofort auf jede Dateilisten-Änderung.

Maximale Dateigröße (MaxFileSize)

Dateien die größer als MaxFileSize sind werden JS-seitig abgelehnt – kein SignalR-Transfer findet statt. Standard: 10 MB. Hier auf 500 KB eingestellt zum Testen.

Dateien serverseitig speichern



SKILL.md – Filedrop
---
name: FileDrop
description: Onesown Blazor Komponente FileDrop (Inputs). Verwende diesen Skill wenn du die FileDrop-Komponente verwenden, konfigurieren oder debuggen moechtest.
---

# FileDrop

**Namespace:** `Onesown.Blazor.Components`  
**Kategorie:** Inputs  
**Basisklasse:** `OoComponentBase`  

Universeller Wrapper der beliebige Kind-Inhalte zur Drag-&-Drop- und Paste-Zone für Dateien macht. Unterstützt Dateien und Bilder aus der Zwischenablage (Strg+V) sowie per Drag & Drop. Bilder werden als Thumbnails, andere Dateien als Chips dargestellt. Dateidaten werden per Chunking übertragen – kein SignalR-Größenlimit.

**Live-Demo:** https://components.schini.com/demo/filedrop  

## Parameter

| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
| ``ChildContent`` | ``RenderFragment`` |  | Kind-Inhalt der zur Drop/Paste-Zone wird. |
| ``ThumbnailPosition`` | ``OoFileDropPosition`` | ``OoFileDropPosition.Below`` | Position der Datei-Thumbnails und Chips relativ zum Kind-Inhalt. Below (Standard): unterhalb; Above: oberhalb; None: keine Anzeige. |
| ``AcceptImages`` | ``bool`` | ``true`` | Akzeptiert Bilddateien (image/*) per Paste und Drop. Standard: true. |
| ``AcceptFiles`` | ``bool`` | ``true`` | Akzeptiert Nicht-Bild-Dateien per Paste und Drop. Standard: true. |
| ``AllowedExtensions`` | ``string`` |  | Optionale Whitelist erlaubter Dateiendungen als kommagetrennte Liste (ohne Punkt, Kleinschreibung). Beispiel: "pdf,docx,xlsx". Wenn angegeben, haben AcceptImages und AcceptFiles keine Wirkung mehr – es werden ausschließlich Dateien mit diesen Endungen akzeptiert. Leer (Standard) = alle Dateitypen werden akzeptiert (gefiltert nach AcceptImages / AcceptFiles). |
| ``MaxFileSize`` | ``long`` | ``1000L * 1024 * 1024`` | Maximale Dateigröße in Bytes pro Datei. Dateien die größer sind werden JS-seitig abgelehnt und über gemeldet – es erfolgt kein Chunk-Transfer. Standard: 1000 MB. Auf 0 setzen um das Limit zu deaktivieren. |
| ``OnFilesRejected`` | ``EventCallback<List<string>>`` |  | Wird ausgelöst wenn Dateien wegen Überschreitung von abgelehnt wurden. Liefert eine Liste der abgelehnten Dateinamen. |
| ``Files`` | ``List<DropFile>`` | ``new()`` | Aktuelle Liste aller Dateien (Bilder + sonstige). Unterstützt Two-Way-Binding via @bind-Files. |
| ``FilesChanged`` | ``EventCallback<List<DropFile>>`` |  | EventCallback für Two-Way-Binding. Wird nach jeder Änderung der Dateiliste ausgelöst. |
| ``OnFilesChanged`` | ``EventCallback<List<DropFile>>`` |  | Wird zusätzlich zu ausgelöst wenn sich die Dateiliste ändert. |
| ``EagerLoad`` | ``bool`` | ``true`` | Wenn true (Standard), werden Dateidaten sofort nach dem Drop per Chunking übertragen. Wenn false, werden nur Metadaten empfangen – Bytes erst nach explizitem Aufruf von übertragen. |
| ``ShowBrowseButton`` | ``bool`` | ``false`` | Blendet einen „Durchsuchen"-Button ein der einen nativen Datei-Dialog öffnet. Standard: false. |
| ``BrowseButtonText`` | ``string`` | ``"Durchsuchen"`` | Beschriftung des Durchsuchen-Buttons. Standard: „Durchsuchen". |
| ``BrowseMultiple`` | ``bool`` | ``true`` | Erlaubt die Auswahl mehrerer Dateien über den Durchsuchen-Dialog. Standard: true. |

## Geerbte Parameter (OoComponentBase)

Alle nicht deklarierten HTML-Attribute (``class``, ``style``, ``data-*``, ``aria-*``, ...) werden an das Root-Element weitergereicht.

| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
| ``Size`` | ``string`` |  | Größe der Komponente. Mögliche Werte: OoSize.Xs, OoSize.Sm, OoSize.Md, OoSize.Lg, OoSize.Xl. Wird als CSS-Klasse am Root-Element gesetzt. |

## Hinweise

- Natives HTML-Attribut class wird automatisch an das Root-Element weitergegeben
- Natives HTML-Attribut style wird automatisch an das Root-Element weitergegeben
- Alle weiteren nicht deklarierten Attribute (data-*, aria-*, id, tabindex, …) werden ebenfalls weitergereicht
- Größe der Komponente via Size mit OoSize-Konstanten steuern (OoSize.Xs bis OoSize.Xl)
- Dateien empfangen: <c>@bind-Files</c> oder <c>OnFilesChanged</c>
- Nur Bilder: <c>AcceptImages="true" AcceptFiles="false"</c>
- Nur Dateien (keine Bilder): <c>AcceptImages="false" AcceptFiles="true"</c>
- Position der Thumbnails/Chips: <c>ThumbnailPosition="OoFileDropPosition.Below"</c> (Standard)
- Größenlimit: <c>MaxFileSize</c> in Bytes – zu große Dateien werden JS-seitig abgelehnt und über <c>OnFilesRejected</c> gemeldet
- Kein SignalR-Limit: Dateidaten werden in 1 MB Chunks übertragen


Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.