@inject HttpClient Http
@if (!string.IsNullOrEmpty(Image)) {
}
@code { [Parameter] public string? Image { get; set; } [Parameter] public string? UploadLink { get; set; } [Parameter] public string? Accept { get; set; } IBrowserFile selectedFile; private CancellationTokenSource? _cancellationTokenSource; protected override async Task OnInitializedAsync() { } void RemovePhoto() { Image = ""; selectedFile = null; } async Task FileChanged(InputFileChangeEventArgs e) { selectedFile = e.File; await GenerateBase64Preview(selectedFile); } public async Task UploadFile() { var multipartContent = new MultipartFormDataContent(); if (selectedFile != null) { var fileContent = new StreamContent(selectedFile.OpenReadStream()); fileContent.Headers.ContentType = new MediaTypeHeaderValue(selectedFile.ContentType); multipartContent.Add(fileContent, "file", selectedFile.Name); var response = await Http.PostAsync(UploadLink, multipartContent); return await response.Content.ReadFromJsonAsync(); @* new ProgressMessageHandler(progress => { _uploadProgress = progress; StateHasChanged(); }) *@ } return ""; } private async Task GenerateBase64Preview(IBrowserFile file) { try { // Resize image for preview (optional) var resizedImage = await file.RequestImageFileAsync( file.ContentType, maxWidth: 800, maxHeight: 800); // Convert to base64 using var stream = resizedImage.OpenReadStream(maxAllowedSize: file.Size); using var memoryStream = new MemoryStream(); await stream.CopyToAsync(memoryStream); Image = $"data:{file.ContentType};base64,{Convert.ToBase64String(memoryStream.ToArray())}"; @* ImageContentType = file.ContentType; *@ StateHasChanged(); } catch (Exception ex) { Console.WriteLine($"Error generating preview: {ex.Message}"); } } }