Skip to content

Nextended.Blazor

📚 Vollständige API-Referenz — jeder öffentliche Typ und Member, erzeugt aus der kompilierten Assembly.

🇬🇧 This page in English

Helfer für Blazor: Uploads als Bytes, Data-URLs oder Download, ein Ordnerbaum über hochgeladene ZIP-, TAR- und RAR-Archive, MIME-Erkennung und Reflection über Komponentenparameter.

NuGet

Installation

bash
dotnet add package Nextended.Blazor

Übersicht

BereichAPI
IBrowserFile-ErweiterungenGetBytesAsync, GetBytes, GetDataUrlAsync, GetContentType, DownloadFileAsync, GetReadableFileSize
Archiv-ErkennungIsZipFile, IsRarFile, IsTarFile, IsArchive
Archiv-NavigationArchiveStructure — ein Hierarchical<T>-Ordnerbaum: CreateStructure, ToArchiveBytesAsync, IsDirectory, Size, ContainingFiles
Einträge als DateienIArchivedBrowserFile / ZipBrowserFile implementieren IBrowserFile
Data-URLsDataUrldata:-URLs aus Bytes und Content-Type bauen und wieder zerlegen
Komponenten-ReflectionComponentRenderHelper.GetCompatibleParameters<T>, GetCompatibleProperties<T>, IsValidParameter, IsRenderFragment, IsEventCallback
MIME-TypenMimeTypeHelper.GetContentType, Matches (Muster wie image/*)

Einen Upload lesen

razor
@using Nextended.Blazor.Extensions

<InputFile OnChange="OnChange" />

@code {
    private async Task OnChange(InputFileChangeEventArgs e)
    {
        var file = e.File;

        var bytes   = await file.GetBytesAsync();
        var dataUrl = await file.GetDataUrlAsync();   // direkt für <img src="...">
        var mime    = file.GetContentType();
        var size    = BrowserFileExtensions.GetReadableFileSize(file.Size);  // "1,4 MB"
    }
}

GetReadableFileSize nimmt optional einen IStringLocalizer, sodass die Einheiten übersetzt werden, und mit fullName: true die ausgeschriebene Form.

In einem hochgeladenen Archiv navigieren

csharp
using Nextended.Blazor.Models;

if (file.IsArchive())
{
    // Die flache Eintragsliste liefert Ihr Archiv-Reader;
    // CreateStructure macht daraus einen Ordnerbaum.
    IList<IArchivedBrowserFile> entries = ReadEntries(file);

    ArchiveStructure root = ArchiveStructure.CreateStructure(entries, rootFolderName: file.Name);

    foreach (var node in root.Children)
    {
        node.IsDirectory;   // Ordner oder Eintrag
        node.Size;          // Ordner summieren ihren Inhalt
        node.BrowserFile;   // bei Einträgen ein IBrowserFile
    }

    // Nach dem Entfernen oder Ergänzen von Knoten wieder packen:
    byte[] repacked = await root.ToArchiveBytesAsync();
}

Weil ein Eintrag selbst ein IBrowserFile ist, funktioniert jede Komponente, die einen Upload annimmt, ohne Anpassung auch mit einer Datei aus dem Archiv — Vorschau und Download laufen über denselben Code.

ArchiveStructureBase<T> leitet von Nextended.Core.Types.Hierarchical<T> ab; Eltern-/Kind- Navigation, Flatten und Pfadsuche kommen von dort. ContainingFiles liefert alle Dateien unterhalb eines Knotens.

ZipStructure ist veraltet

ZipStructure trägt [Obsolete] und ist der Vorgänger von ArchiveStructure. Neuer Code nimmt ArchiveStructure.

Download auslösen

csharp
@inject IJSRuntime Js

await file.DownloadFileAsync(Js);

Data-URLs

csharp
using Nextended.Core.Types;

var url = new DataUrl(bytes, new ContentType("image/png"));
string asString = url.ToString();      // "data:image/png;base64,…"

var parsed = new DataUrl("data:image/png;base64,…");
byte[] raw = parsed.Bytes;

Parameter aus einem Wörterbuch an eine Komponente geben

csharp
using Nextended.Blazor.Helper;

// Nur die Einträge, die es auf TComponent wirklich als [Parameter] gibt, korrekt typisiert.
var parameters = ComponentRenderHelper.GetCompatibleParameters<MyComponent>(incoming);

Nützlich, wenn Parameter aus Konfiguration oder JSON kommen und Sie eine Laufzeitausnahme wegen eines unbekannten Parameters vermeiden wollen. IsValidParameter, IsRenderFragment und IsEventCallback beantworten Einzelfragen; IsValidPropertyWithAttribute<TAttribute> filtert nach einem eigenen Attribut.

MIME-Typen abgleichen

csharp
using Nextended.Blazor.Helper;

MimeTypeHelper.GetContentType("bericht.pdf");        // "application/pdf"
MimeTypeHelper.Matches("image/png", "image/*");      // true

Praktisch für eine accept-Prüfung, die Platzhalter versteht.

Unterstützte Frameworks

  • net8.0
  • net9.0
  • net10.0

Plattform

Plattformübergreifend (Blazor Server und WebAssembly).

Abhängigkeiten

  • Nextended.Core
  • Microsoft.AspNetCore.Components.Web
  • Microsoft.Extensions.Localization.Abstractions