Como criar o ZipArchive a partir de arquivos na memória em C #?
De alguma forma, é possível criar um ZipArchive a partir dos arquivos na memória (e não no disco).
A seguir está o caso de uso: Vários arquivos são recebidos em umIEnumerable<HttpPostedFileBase>
variável. Quero compactar todos esses arquivos usandoZipArchive
. O problema é queZipArchive
só permiteCreateEntryFromFile
, que espera um caminho para o arquivo, onde apenas os arquivos estão na memória.
Pergunta, questão: Existe uma maneira de usar um 'fluxo' para criar a 'entrada' emZipArchive
, para que eu possa colocar diretamente o conteúdo do arquivo no zip?
Não quero primeiro salvar os arquivos, criar o zip (a partir dos caminhos dos arquivos salvos) e depois excluir os arquivos individuais.
Aqui,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);
}
}
...
}