有没有办法让文件流下载到 Blazor 中的浏览器?

Abd*_*lah 5 c# browser blazor blazor-server-side

我正在尝试使用 Blazor 做一些事情,但我还是个新手。我正在尝试获取文件流以下载到浏览器。将文件从 Blazor 下载到浏览器的最佳方式是什么?

我试过在我的剃刀视图中使用一种方法来返回一个流,但没有用。

//In my Blazor view
@code{
    private FileStream Download()
    {
        //get path + file name
        var file = @"c:\path\to\my\file\test.txt";
        var stream = new FileStream(test, FileMode.OpenOrCreate);
        return stream;
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码没有给我任何东西,甚至没有错误

Sof*_*ion 7

另一种解决方案是使用endpoints.MapControllerRoute. 不过,这仅适用于服务器端 blazor。

前任:

endpoints.MapBlazorHub();
endpoints.MapControllerRoute("mvc", "{controller}/{action}");
endpoints.MapFallbackToPage("/_Host");
Run Code Online (Sandbox Code Playgroud)

然后添加一个控制器。例如:

public class InvoiceController : Controller
{
    [HttpGet("~/invoice/{sessionId}")]
    public async Task<IActionResult> Invoice(string sessionId, CancellationToken cancel)
    {
        return File(...);
    }
}
Run Code Online (Sandbox Code Playgroud)

在 .razor 文件中的用法:

async Task GetInvoice()
{
    ...
    Navigation.NavigateTo($"/invoice/{orderSessionId}", true);
}
Run Code Online (Sandbox Code Playgroud)