Возможно ли создать 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);
}
}
...
}