0

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

选择后,我想使用 计算文件的校验和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,但没有成功。

4

1 回答 1

0

我最终这样做了:


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

于 2020-06-25T15:50:32.467 回答