Is there any difference in getting bytes range in ByteRangeStreamContent and cutting bytes directly from bytes array

164 Views Asked by At

I am wondering if there is any difference in getting bytes range content in ByteRangeStreamContent and getting bytes range directly from bytes array

So basically I want to ask if there is any difference in below two codes, in terms of the result that the receiver will receive as response

byte[] bytes = firmwareFile.Content;;
var stream = new MemoryStream(bytes);
var content = new ByteRangeStreamContent(stream, Request.Headers.Range, contentType);
var response = new HttpResponseMessage
                         {
                             Content = content
                         };
result.StatusCode = HttpStatusCode.PartialContent;

and

if (Request.Headers.Range != null)
{
    var range = Request.Headers.Range.Ranges.OfType<RangeItemHeaderValue>().First();

    if(range.From.HasValue && range.To.HasValue)
    {
        var from = (int)range.From.Value;
        var to = (int)range.To.Value;

        bytes = firmwareFile.Content.Skip(from).Take(to - from).ToArray();
    }
}

var stream = new MemoryStream(bytes);
var content = new ByteArrayContent(stream.ToArray());
var response = new HttpResponseMessage
                             {
                                 Content = content
                             };
response.Content.Headers.ContentType = contentType;
result.StatusCode = HttpStatusCode.PartialContent;

Also, is the second version correct? And can I use it

0

There are 0 best solutions below