WebApi からファイル コンテンツを受信するリクエストを受け取りました。
リクエストにはrangeヘッダーを含めることもできるためByteRangeStreamContent、コンテンツを生成するために使用し、最終的にこのコンテンツを として送信しますHttpResponse。
これは私が使用するコードです
var contentType = new MediaTypeHeaderValue("application/octet-stream");
var bytes = fileProvider.GetFile(fileId);
var stream = new MemoryStream(bytes);
if (Request.Headers.Range != null)
{
var content = new ByteRangeStreamContent(stream, Request.Headers.Range, contentType);
return ByteArrayHttpResponseMessage(content);
}
else
{
var content = new ByteArrayContent(stream.ToArray());
return ByteArrayHttpResponseMessage(content);
}
ここで、データに CRC32 チェックを追加する必要があります。
これは、CRC32 の計算と追加に使用できるバイト配列にアクセスできるため、範囲ヘッダーが送信されない場合に簡単に実行できます。
範囲変数が送信されると問題が発生します。送信されるバイト配列形式の実際のデータにアクセスByteRangeStreamContentできないため、送信する前にCRC32で更新することはできません。
メソッドがあることを確認しましたが、配列を抽出してCRC32を配列に追加し、更新されたオブジェクトを再度生成するReadAsByteArrayAsync()のが正しい方法であるかどうかはわかりません。ByteRangeStreamContentByteRangeStreamContent
これを行う方法はありますか?