WebAPI - 文件下载校验和?

时间:2017-01-04 10:12:27

标签: c# asp.net-web-api stream

我目前正在使用C#RestClient从我的Web API下载文件。 这是我从Web API部分返回文件的当前代码:

[HttpGet]
public HttpResponseMessage Generate()
{
var stream = new MemoryStream();
// processing the stream.

var result = new HttpResponseMessage(HttpStatusCode.OK)
{
    Content = new ByteArrayContent(stream.GetBuffer())
};
result.Content.Headers.ContentDisposition =
    new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
{
    FileName = "CertificationCard.pdf"
};
result.Content.Headers.ContentType =
    new MediaTypeHeaderValue("application/octet-stream");

return result;
}

取自:How to return a file (FileContentResult) in ASP.NET WebAPI

我的问题是,如何验证文件是否正确下载 - 我能否以某种方式在ByteArray上提供MD5校验和并在RestClient中检查,或者这完全没必要?

1 个答案:

答案 0 :(得分:2)

您将生成文件的哈希值,将其添加为响应头并验证下载何时在客户端内完成。

如果您认为流中的数据有可能损坏,或者网络问题超出TCP纠错处理能力,那么这只会有意义。

判断请求是多么必要,请参阅Why is it good practice to compare checksums when downloading a file?进行讨论。 (考虑到哈希和数据源自同一响应中的相同位置,安全考虑因素并不适用)