Используя MatBlazor, я пытаюсь загрузить файлы. Однако что-то блокирует поток, и все приложение блокируется. Я не могу понять, почему. Кажется, что поток заблокирован, пока файл не был загружен в память. Это мой код или MatFileUploadEntry блокирует поток?
У кого-нибудь есть идеи?
Звоните:
<MatFileUpload OnChange="@FileUpload"></MatFileUpload>
Ответ:
private async Task FileUpload(IMatFileUploadEntry[] files)
{
var f = files.FirstOrDefault();
if (f.Name.IsValidFileFormat())
{
var file = await GetFileModel(f);
if (f.Name.IsImage())
Model.Image = file;
else
Model.Document = file;
}
}
private async Task<FileModel> GetFileModel(IMatFileUploadEntry f)
{
var sw = new Stopwatch();
sw.Start();
using var ms = new MemoryStream();
await f.WriteToStreamAsync(ms);
sw.Stop();
var base64String = Convert.ToBase64String(ms.ToArray());
return new FileModel
{
FileName = f.Name,
FileContentBase64 = base64String
};
}