Comment créer ZipArchive à partir de fichiers en mémoire en C #?

Est en quelque sorte possible de créer un ZipArchive à partir du fichier(s) dans la mémoire (et non pas sur le disque).

Suivant est le cas d'utilisation:
Plusieurs fichiers sont reçus dans un IEnumerable<HttpPostedFileBase> variable. Je veux zip tous ces fichiers à l'aide de ZipArchive. Le problème est que ZipArchive permet seulement CreateEntryFromFile, qui s'attend à un chemin d'accès au fichier, où, comme je viens de le fichiers dans la mémoire.

Question:
Est-il possible d'utiliser un "stream" pour créer le "entrée" dans ZipArchive, de sorte que je peux directement mettre dans le fichier contenu dans le zip?

Je ne veux pas d'abord enregistrer les fichiers, créer le zip (à partir de fichiers enregistrés les chemins d'accès), puis supprimer les fichiers individuels.

Ici, attachmentFiles est 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);
        }
    }
    ...
}

source d'informationauteur Flair