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
};
}