我正在开发一个新的网络应用程序,使用户能够将大文件上传到服务器。这不是生产级应用程序。 我为此使用 blazor 服务器端模式,但我无法找到向用户显示上传百分比的方法。任何想法或建议都将受到高度赞赏。
我正在使用输入文件从浏览器中选择文件。 这是服务器代码。
string safeFileName = WebUtility.HtmlEncode(file.Name);
var path = Path.Combine(env.ContentRootPath, "files", safeFileName);
await using FileStream fs = new(path, FileMode.Create);
await file.OpenReadStream(maxFileSize).CopyToAsync(fs);
我就是这样做的。我正在循环中计算百分比,并手动将字节从一个流复制到另一个流。
string safeFileName = WebUtility.HtmlEncode(file.Name);
long size = file.Size;
// Save file locally
var path = Path.Combine(env.ContentRootPath, "files", safeFileName);
await using FileStream fs = new(path, FileMode.Create);
var inputstream = file.OpenReadStream(maxFileSize);
await file.OpenReadStream(maxFileSize).CopyToAsync(fs);
byte[] buffer = new byte[bufferSize];
int bytesRead;
long readAmount = 0;
do
{
Array.Clear(buffer);
bytesRead = await inputstream.ReadAsync(buffer, 0, bufferSize);
await fs.WriteAsync(buffer, 0, bytesRead);
readAmount += bytesRead;
percentage = readAmount * 100 / size;
StateHasChanged();
System.Diagnostics.Debug.WriteLine(percentage);
} while (bytesRead > 0);