2017-01-04 4 views
0

Ich lade gerade eine Datei von meiner Web-API mit einem C# RestClient herunter. Das ist mein aktueller Code ist eine Datei aus dem Web API Teil zu der Suche nachWebAPI - Dateidownload-Prüfsumme?

[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; 
} 

von dieser Genommen: How to return a file (FileContentResult) in ASP.NET WebAPI

Meine Frage ist dann, wie kann ich überprüfen, ob die Datei korrekt heruntergeladen wird - kann i stelle irgendwie eine MD5-Prüfsumme auf dem ByteArray bereit und überprüfe das im RestClient, oder ist das komplett überflüssig?

+0

Siehe Beitrag: http://StackOverflow.com/Questions/10520048/Calculate-Md5-Checksum-for -a-file – jdweng

+1

Sie würden einen Hash der Datei generieren, diesen als Antwortheader hinzufügen und überprüfen, ob der Download innerhalb des Clients abgeschlossen ist. Dies ist nur sinnvoll, wenn Sie vermuten, dass die Daten innerhalb Ihres Streams beschädigt sind oder dass Netzwerkprobleme auftreten, die außerhalb der Möglichkeiten der TCP-Fehlerkorrektur liegen. Wie notwendig dies ist, ist ein Urteilsspruch, siehe http://serverfault.com/questions/692457/why-is-it-good-practice-to-compare-checksums-when-downloading-a-file –

+0

Dank @AlexK. Ich habe die MD5Hash in den Headern hinzugefügt, funktioniert perfekt! :-) bitte hinterlasse das als Antwort – Mathias

Antwort

2

Sie würden einen Hash der Datei generieren, diesen als Antwortheader hinzufügen und überprüfen, ob der Download innerhalb des Clients abgeschlossen ist.

Dies würde nur Sinn machen, wenn Sie denken, dass es eine Chance auf Korruption der Daten in Ihrem Stream oder Netzwerkprobleme gibt, die außerhalb der Möglichkeiten der TCP-Fehlerkorrektur liegen.

Wie notwendig ist dies ein Urteilsspruch, siehe Why is it good practice to compare checksums when downloading a file? für eine Diskussion. (In Anbetracht der Hash & Daten stammen aus dem gleichen Ort in der gleichen Antwort, gelten die Sicherheitsüberlegungen nicht wirklich)