Wie erstelle ich ZipArchive aus Dateien im Speicher in C #?
Ist es irgendwie möglich, ein ZipArchive aus den Dateien im Speicher (und nicht auf der Festplatte) zu erstellen?
Folgen ist der Anwendungsfall: Mehrere Dateien werden in einem @ empfangIEnumerable<HttpPostedFileBase>
Variable. Ich möchte alle diese Dateien mit @ komprimiereZipArchive
. Das Problem ist, dassZipArchive
erlaubt nurCreateEntryFromFile
, das einen Pfad zur Datei erwartet, wo ich gerade die Dateien im Speicher habe.
Frage Gibt es eine Möglichkeit, einen 'Stream' zu verwenden, um den 'Eintrag' in @ zu erstelleZipArchive
, damit ich den Inhalt der Datei direkt in die Zip einfügen kann?
Ich möchte nicht zuerst die Dateien speichern, die Zip-Datei erstellen (aus den Pfaden der gespeicherten Dateien) und dann die einzelnen Dateien löschen.
Hier,attachmentFiles
istIEnumerable<HttpPostedFileBase>
using (var ms = new MemoryStream())
{
using (var zipArchive = new ZipArchive(ms, ZipArchiveMode.Create, true))
{
foreach (var attachment in attachmentFiles)
{
zipArchive.CreateEntryFromFile(Path.GetFullPath(attachment.FileName), Path.GetFileName(attachment.FileName),
CompressionLevel.Fastest);
}
}
...
}