0

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

これを行う方法はありますか?

4

0 に答える 0