Я получаю запрос на получение содержимого файла из 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 перед отправкой.
Я проверил, что у него есть метод ReadAsByteArrayAsync()
, но я не знаю если это правильный способ извлечь массив из ByteRangeStreamContent
, тогда добавьте CRC32 в массив, затем снова попробуйте сгенерировать обновленный объект ByteRangeStreamContent
.
Есть ли способ сделать это?