В настоящее время я не думаю, что есть какие-либо родные компоненты Blazor wasm для загрузки файлов. Существует множество компонентов загрузки файлов, использующих JSInterop. Среди тех, что я пробовал, это Radzen fileupload , Steve Sandersons (один из разработчиков Blazor) fileupload и MatBlazor fileupload .
Однако в настоящее время в Mono есть некоторые проблемы с памятью, а именно с базовой платформой разработки, на которой работает Blazor. Это означает, что Blazor может управлять файлами размером до ~ 5-6 МБ. Поэтому я советую вам использовать компоненты Blazor, которые строго используют javascript для отправки файла на сервер, например, Radzen fileupload.
Вот пример загрузки файла на стороне клиента с использованием MatBlazor (поскольку это тот, что у меня в руках банкомат):
<div class="p-2">
<MatFileUpload OnChange="AddFile" class="form-container" Label="Upload File"></MatFileUpload>
</div>
@code
{
private async Task AddFile(IMatFileUploadEntry[] files)
{
var file = files.FirstOrDefault();
if (file != null)
{
var ms = new MemoryStream();
await file.WriteToStreamAsync(ms);
var content = new MultipartFormDataContent
{
{ new ByteArrayContent(ms.GetBuffer()),
"\"uploadFile\"",
file.Name
}
};
await client.PostAsync("uploadFile", content);
}
}
}