从"BlazorInputFile.IFileStream"获取"byte[]"



我有一个文件,用户将使用Steve Sanderson阐述的BlazorInputFile在浏览器中选择该文件。

选择后,我想使用System.Security.Cryptography.MD5计算文件的校验和,类似于此答案中描述的计算文件的 MD5 校验和

但是,当我尝试这样做时,我遇到了一个System.NotSupportedException

private string GetMd5ForFile(IFileListEntry file)
{
using (var md5 = MD5.Create())
{
return Convert.ToBase64String(md5.ComputeHash(this.file.Data));
}
}

一些异常详细信息包括:

> Message: "Synchronous reads are not supported"
> Source : "BlazorInputFile"
> Stack  : "at BlazorInputFile.FileListEntryStream.Read(Byte[] buffer, Int32 offset, Int32 count)"

我知道ComputeHash()需要一系列byte.到目前为止,我尝试将 BlazorInputFile 的流转换为熟悉的类型,或者使用自己的FileStream方法将字节读取到数组,但没有成功。

我最终这样做了:


private async Task<string> GetMd5ForFile(IFileListEntry file) {
using (var md5 = MD5.Create()) {
var data = await file.ReadAllAsync();
return Convert.ToBase64String(md5.ComputeHash(data.ToArray()));
}
}

相关内容

  • 没有找到相关文章