Ich habe ASP.NET Web API-Projekt, wo ein Benutzer einige Sachen aus einer Datenbank herunterladen kann. Mein Download-Controller ruft Daten von der Datenbankinstanz ab. Jedes einzelne Ergebnis hat ein Blob-Feld, das irgendeine Art von Daten ist (1). Ich möchte jedes Ergebnis in eine ZIP-Datei (2) hinzufügen. Immerhin sende ich die HTTP-Antwort, indem ich meinen Stream-Inhalt hinzufüge.Erstellen von zipFile Auspuff Speicher
List<Result> results = m_Repository.GetResultsForResultId(given_id_by_request);
// 1
foreach (Result result in results)
{
string fileName = String.Format("{0}-{1}.bin", id >> 16, result.Id);
zipFile.AddEntry(fileName, result.Value);
}
// 2
PushStreamContent pushStreamContent = new PushStreamContent((stream, content, context) =>
{
zipFile.Save(stream);
stream.Close();
}
response = new HttpResponseMessage(HttpStatusCode.OK) { Content = pushStreamContent };
Es funktioniert gut! Aber bei großen Download-Anfragen erschöpft dies mein Gedächtnis. Ich muss einen Weg finden, einen Strom in ein zip-Archiv ohne Puffer zu setzen. Kann mir bitte jemand helfen ?!
Sieht so aus, als gäbe es eine andere Frage [Zip-Datei aus dem Stream erstellen und herunterladen] (http://stackoverflow.com/a/2267750/2127492), die diese Art von Problem abdeckt. Die beste Antwort sollte Ihnen bei Ihrem Problem helfen. – jrbeverly