All checks were successful
Build & Deploy PLDpro.Web Test to 192.168.1.100 / build-and-deploy (push) Successful in 1m15s
94 lines
2.8 KiB
Plaintext
94 lines
2.8 KiB
Plaintext
@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}");
|
||
}
|
||
}
|
||
|
||
}
|
||
} |