是否有可能从内存中的文件(而不是实际上在磁盘上)创建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);
}
}
...
}