我目前正在使用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中检查,或者这完全没必要?
答案 0 :(得分:2)
您将生成文件的哈希值,将其添加为响应头并验证下载何时在客户端内完成。
如果您认为流中的数据有可能损坏,或者网络问题超出TCP纠错处理能力,那么这只会有意义。
判断请求是多么必要,请参阅Why is it good practice to compare checksums when downloading a file?进行讨论。 (考虑到哈希和数据源自同一响应中的相同位置,安全考虑因素并不适用)