首页 > 解决方案 > 在 Blazor Wasm 中使用 HttpClient 上传进度

问题描述

我正在尝试在 blazor Web 程序集应用程序中获取文件上传进度。

var handler = new ProgressMessageHandler();
handler.InnerHandler = new WebAssemblyHttpMessageHandler();
handler.HttpSendProgress += (object sender, HttpProgressEventArgs e) =>
{
    Console.WriteLine("bytes transfered= " + e.BytesTransferred.ToString());
    Console.WriteLine("total bytes= " + e.TotalBytes.ToString());
    Console.WriteLine("progress percentage= " + e.ProgressPercentage.ToString());
};

var http = new HttpClient(handler);
http.BaseAddress = new Uri(NavigationManager.BaseUri);
await http.PostJsonAsync("api/...", attachedFile);

Console.WriteLine("Done");

我想出了以下代码,但是当我上传文件时,即使发布请求持续了几秒钟,我也会立即收到一个事件报告 100% 完成。

WASM: bytes transfered= 277983
blazor.webassembly.js:1 WASM: total bytes= 277983
blazor.webassembly.js:1 WASM: progress percentage= 100

关于处理上传进度的 SO 有一些问题,但如果可能,我想使用 Http.ProgressMessageHandler

标签: c#.netdotnet-httpclientblazorblazor-client-side

解决方案


推荐阅读