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 更新它。

我检查了它是否有方法ReadAsByteArrayAsync(),但我不知道这是否是从中提取数组ByteRangeStreamContent然后将 CRC32 添加到数组然后再次尝试生成更新的ByteRangeStreamContent对象的正确方法。

有没有办法做到这一点?

4

0 回答 0