2017-01-04 15 views
0

私は現在、Web APIからC#RestClientを使用してファイルをダウンロードしています。 これは、Web API部からファイルを返すための私の現在のコードです:WebAPI - ファイルダウンロードチェックサム?

[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

投稿を参照してください:http://stackoverflow.com/questions/10520048/calculate-md5-checksum-for -a-file – jdweng

+1

ファイルのハッシュを生成し、それをレスポンスヘッダーとして追加し、クライアント内でダウンロードが完了したことを確認します。これは、ストリームやネットワークの問題の中でデータの破損が発生する可能性があると考えて、処理するTCPエラー修正機能以外の場合にのみ意味をなさないでしょう。これが必要なのは判断の呼び出しです。http://serverfault.com/questions/692457/why-is-it-good-practice-to-compare-checksums-when-downloading-a-file –

+0

Thanks @AlexKを参照してください。私はヘッダーにMD5ハッシュを追加して、完璧に働いた! :-)これを答えとして残してください – Mathias

答えて

2

ファイルのハッシュを生成し、レスポンスヘッダーとして追加し、クライアント内でダウンロードが完了したことを確認します。

これは、ストリームまたはネットワーク内のデータが破損する可能性があると考えて、処理するTCPエラー修正機能以外の場合にのみ意味があります。

これは判断の必要な呼び出しです。詳しくは、Why is it good practice to compare checksums when downloading a file?を参照してください。 (ハッシュ&のデータが同じレスポンスの同じ場所に由来すると考えると、セキュリティ上の考慮事項は実際には適用されません)