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?
Siehe Beitrag: http://StackOverflow.com/Questions/10520048/Calculate-Md5-Checksum-for -a-file – jdweng
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 –
Dank @AlexK. Ich habe die MD5Hash in den Headern hinzugefügt, funktioniert perfekt! :-) bitte hinterlasse das als Antwort – Mathias