@inject HttpClient httpClient

Multiple File Selection

@if (ReadyToUpload.Any() || AlreadyUploaded.Any()) {

Selected Files:

@* *@
} @if (!string.IsNullOrEmpty(message)) {

@message

} @code { [Parameter] public string UploadLink { get; set; } [Parameter] public string DeleteLink { get; set; } [Parameter] public string AcceptedFileTypes { get; set; } = "*"; [Parameter] public List AlreadyUploaded { get; set; } List ReadyToDeleteFromDB { get; set; } private List ReadyToUpload = new(); private const long MaxFileSize = 1024 * 1024 * 10; // 10MB private string message = string.Empty; public async Task> UpdateFiles() { var updatedImages = new List(); await DeleteFromServer(); var uploadedImages = await UploadToServer(); updatedImages.AddRange(uploadedImages); updatedImages.AddRange(AlreadyUploaded); return updatedImages; } async Task> UploadToServer() { var uploadedImages = new List(); try { foreach (var file in ReadyToUpload) { var content = new MultipartFormDataContent(); var fileContent = new StreamContent(file.OpenReadStream(MaxFileSize)); fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(file.ContentType); content.Add(fileContent, "file", file.Name); var response = await httpClient.PostAsync($"{UploadLink}", content); uploadedImages.Add(await response.Content.ReadAsStringAsync()); } message = $"Successfully processed {ReadyToUpload.Count} file(s)"; return uploadedImages; // Optional: Clear selection after upload // selectedFiles.Clear(); } catch (Exception ex) { message = $"Error uploading files: {ex.Message}"; return uploadedImages; } } async Task DeleteFromServer() { try { foreach (var name in ReadyToDeleteFromDB) { await httpClient.DeleteAsync($"{name.Split("/")[-1]}"); } } catch { } } private void HandleFilesSelected(InputFileChangeEventArgs e) { ReadyToUpload.Clear(); // Get all selected files foreach (var file in e.GetMultipleFiles()) { // Optional: Add file size limit (e.g., 5MB) if (file.Size <= 5 * 1024 * 1024) { ReadyToUpload.Add(file); } } message = $"Selected {ReadyToUpload.Count} file(s)"; } }