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

时间:2019-10-23 16:45:44

标签: c# browser blazor blazor-server-side

我正在与Blazor一起尝试一些事情,但我仍然是新手。我正在尝试获取文件流以下载到浏览器。从Blazor将文件下载到浏览器的最佳方法是什么?

我尝试在剃刀视图中使用一种方法,该方法返回流,但是不起作用。

MP4Box

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

2 个答案:

答案 0 :(得分:5)

另一种解决方案是使用endpoints.MapControllerRoute添加一个简单的api控制器端点。不过,这仅适用于服务器端。

例如:

endpoints.MapBlazorHub();
endpoints.MapControllerRoute("mvc", "{controller}/{action}");
endpoints.MapFallbackToPage("/_Host");

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

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

.razor文件中的用法:

async Task GetInvoice()
{
    ...
    Navigation.NavigateTo($"/invoice/{orderSessionId}", true);
}

答案 1 :(得分:0)

对于上传文件,我建议使用Steve Sanderson blog post

出于安全原因,您无法从浏览器访问文件。同样,如果您将服务器端blazeor中的文件作为目标,则将服务器自身中的文件作为目标。