Как создать ZipArchive из файлов в памяти в C #?
Можно ли каким-то образом создать ZipArchive из файла (ов) в памяти (а не на самом деле на диске).
Ниже приведен пример использования: Несколько файлов получены вIEnumerable<HttpPostedFileBase>
переменная. Я хочу сжать все эти файлы вместе, используяZipArchive
, Проблема в том, чтоZipArchive
только позволяетCreateEntryFromFile
, который ожидает путь к файлу, где, как у меня просто файлы в памяти.
Вопрос: Есть ли способ использовать «поток» для создания «записи» вZipArchive
, так что я могу прямо положить содержимое файла в zip?
Я не хочу сначала сохранять файлы, создавать zip (из путей сохраненных файлов), а затем удалять отдельные файлы.
Вот,attachmentFiles
являетсяIEnumerable<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);
}
}
...
}