Создатель Blazor Стив Сандерсон использовал взаимодействие JavaScript для аналогичной задачи во время одной из своих последних презентаций.
Пример можно найти на BlazorExcelSpreadsheet
Решение состоит из трех частей:
1) JavaScript
function saveAsFile(filename, bytesBase64) {
var link = document.createElement('a');
link.download = filename;
link.href = "data:application/octet-stream;base64," + bytesBase64;
document.body.appendChild(link); // Needed for Firefox
link.click();
document.body.removeChild(link);
}
2) C # interop wrapper
public static class FileUtil
{
public static Task SaveAs(string filename, byte[] data)
=> JSRuntime.Current.InvokeAsync<object>(
"saveAsFile",
filename,
Convert.ToBase64String(data));
}
3) Вызов из вашего компонента
FileUtil.SaveAs("Filename.dat", new byte[] {});
Вы можете видетьэто действие в Blazor Fiddle