Files
PLDpro.Web/Components/Pages/DmsUpload.razor
Erik cae77ef1e3
All checks were successful
Build & Deploy PLDpro.Web Test to 192.168.1.100 / build-and-deploy (push) Successful in 1m15s
DMS Layout mit Fehlern
2026-02-09 21:50:24 +01:00

94 lines
2.8 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@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}");
}
}
}
}