我收到从 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对象的正确方法。
有没有办法做到这一点?