Thor/Thor.BlazorWAsm/Components/AttachmentSend.razor
2025-03-21 07:19:48 +01:00

60 lines
1.8 KiB
Plaintext

@if (!Uploading)
{
<InputFile OnChange="OnFileChanged" />
}
@Status
@code {
[Parameter]
public InspectionRegister Register { get; set; }
[Parameter]
public string ItemId { get; set; }
public bool Uploading { get; set; } = false;
public string Status { get; set; } = "";
async Task OnFileChanged(InputFileChangeEventArgs e)
{
Console.WriteLine("Début de l'envoi");
Status = "Envoi en cours...";
Uploading = true;
_ = InvokeAsync(StateHasChanged);
try
{
foreach (var file in e.GetMultipleFiles())
{
Console.WriteLine($"DEbut envoi {file.Name}");
Status = $"Envoi : {file.Name}.";
_ = InvokeAsync(StateHasChanged);
using var memstr = new MemoryStream();
await file.OpenReadStream(maxAllowedSize: long.MaxValue).CopyToAsync(memstr); ;
Register.Add(new()
{
Identifier = Guid.NewGuid().ToString(),
Author = "(null)",
Type = InspectionEntry.EntryType.Attachement,
Target = ItemId,
Attachment = memstr.ToArray(),
AttachmentName = file.Name
});
Console.WriteLine($"Added attachment {file.Name}, size: {memstr.Length}.");
}
}
catch (Exception ex)
{
Status = $"Échec de l'envoi : {ex}.";
_ = InvokeAsync(StateHasChanged);
Console.WriteLine($"Echec de l'envoi: {ex}");
}
Uploading = false;
Status = "";
_ = InvokeAsync(StateHasChanged);
Console.WriteLine("Envoi réussi");
}
}