0

Steve Sandersonによって説明されているように、ユーザーがBlazorInputFileを使用してブラウザーで選択するファイルがあります。

選択したら、 を使用してファイルのチェックサムを計算します。ファイルの MD5 チェックサムSystem.Security.Cryptography.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 に答える