DMS Layout mit Fehlern
All checks were successful
Build & Deploy PLDpro.Web Test to 192.168.1.100 / build-and-deploy (push) Successful in 1m15s

This commit is contained in:
2026-02-09 21:50:24 +01:00
parent f9fb791dca
commit cae77ef1e3
12 changed files with 709 additions and 1 deletions

View File

@@ -0,0 +1,94 @@
@page "/dms/upload"
@using MudBlazor
@inject Pldpro.Web.UI.Services.IDocumentClient Client
@inject NavigationManager Nav
@inject ISnackbar Snackbar
<PageTitle>Upload</PageTitle>
<MudPaper Class="pa-4">
<MudText Typo="Typo.h5" GutterBottom="true">Dokument-Upload</MudText>
<MudStack Spacing="2">
<MudSelect T="string" @bind-Value="_bucket" Label="Bucket" Dense="true" Style="min-width:260px" Required="true" RequiredError="Bitte Bucket wählen">
@foreach (var b in _buckets)
{
<MudSelectItem Value="@b">@b</MudSelectItem>
}
</MudSelect>
<MudTextField @bind-Value="_path"
Placeholder="Pfad (optional, z.B. rechnungen/2026)"
Variant="Variant.Outlined"
Adornment="Adornment.Start"
AdornmentIcon="@Icons.Material.Filled.Folder" />
<InputFile OnChange="OnFilesSelected" multiple />
<MudList T="string" Dense="true">
@foreach (var msg in _messages)
{
<MudListItem>@msg</MudListItem>
}
</MudList>
<MudStack Row="true" Spacing="2">
<MudButton Variant="Variant.Outlined" StartIcon="@Icons.Material.Filled.List" OnClick="@(() => Nav.NavigateTo("/dms/list"))">
Zur Liste
</MudButton>
<MudButton Variant="Variant.Outlined" StartIcon="@Icons.Material.Filled.Dashboard" OnClick="@(() => Nav.NavigateTo("/dms"))">
Dashboard
</MudButton>
</MudStack>
</MudStack>
</MudPaper>
@code {
private List<string> _buckets = new();
private string? _bucket;
private string? _path;
private RenderFragment? _result;
private const long StreamLimit = 512L * 1024 * 1024;
protected override async Task OnInitializedAsync()
{
try
{
_buckets = (await Client.ListBucketsAsync()).ToList();
_bucket = _buckets.FirstOrDefault();
}
catch (Exception ex)
{
Snackbar.Add($"Buckets konnten nicht geladen werden: {ex.Message}", Severity.Error);
}
}
private readonly List<string> _messages = new();
private async Task OnFilesSelected(InputFileChangeEventArgs e)
{
if (string.IsNullOrWhiteSpace(_bucket))
{
Snackbar.Add("Bitte zuerst einen Bucket auswählen.", Severity.Warning);
return;
}
foreach (var f in e.GetMultipleFiles())
{
try
{
await Client.UploadAsync(_bucket!, _path, f, StreamLimit);
_messages.Add($"hochgeladen: {f.Name} ({f.Size:N0} Bytes)");
}
catch (Exception ex)
{
_messages.Add($"Fehler bei '{f.Name}': {ex.Message}");
}
}
}
}