@page "/filelist"

Blazor.LocalFiles - File Select List

@if (errorMessage != null) { }
@if (fileSelectList?.HasSelectedFiles == true) {
@foreach (var selectedFile in fileSelectList.SelectedFiles) { var fileLoad = loadFiles[selectedFile.Name]; }
Name Last Modified Size Is Loaded Loaded Size
@selectedFile.Name @selectedFile.LastModified.ToLocalTime() @selectedFile.Size @fileLoad.IsLoaded @fileLoad.LoadedSize
} @code { FileSelectList fileSelectList; Dictionary loadFiles = new Dictionary(StringComparer.OrdinalIgnoreCase); string errorMessage; void SelectFiles() { ResetErrorState(); // Trigger the file selection dialog fileSelectList.SelectFiles(); } Task FilesSelectedHandler(SelectedFile[] selectedFiles) { var newSelectedFiles = selectedFiles.Select(file => new LoadFile() { SelectedFile = file, IsLoaded = false, LoadedSize = 0 }).ToArray(); foreach(var file in newSelectedFiles) { loadFiles[file.SelectedFile.Name] = file; } return Task.CompletedTask; } async Task LoadFile(LoadFile file) { try { using (var fileStream = await fileSelectList.OpenFileStreamAsync(file.SelectedFile.Name)) { var buffer = new System.IO.MemoryStream(); await fileStream.CopyToAsync(buffer); file.IsLoaded = true; file.LoadedSize = (int)buffer.Length; } } catch(Exception ex) { errorMessage = ex.Message; } } void RemoveFile(string fileName) { fileSelectList.RemoveFile(fileName); } void CloseErrorAlert() { ResetErrorState(); } void ResetErrorState() { errorMessage = null; } }