télécharger plusieurs fichiers au format zip dans .net

J’ai une liste de fichiers avec une case à cocher pour chaque fichier. Si l’utilisateur vérifie plusieurs fichiers et clique sur Télécharger, je dois compresser tous ces fichiers et les télécharger … comme dans les courriers joints.

J’ai utilisé la mention de code dans ce post pour le téléchargement de fichier unique

Les pls aident comment télécharger plusieurs fichiers comme zip.

Vous devez emballer des fichiers et écrire un résultat dans une réponse. Vous pouvez utiliser la bibliothèque de compression SharpZipLib .

Exemple de code:

Response.AddHeader("Content-Disposition", "attachment; filename=" + compressedFileName + ".zip"); Response.ContentType = "application/zip"; using (var zipStream = new ZipOutputStream(Response.OutputStream)) { foreach (ssortingng filePath in filePaths) { byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); var fileEntry = new ZipEntry(Path.GetFileName(filePath)) { Size = fileBytes.Length }; zipStream.PutNextEntry(fileEntry); zipStream.Write(fileBytes, 0, fileBytes.Length); } zipStream.Flush(); zipStream.Close(); } 

Voici comment procéder avec la méthode DotNetZip: DI garantit pour DotNetZip car je l’ai utilisé et c’est de loin la bibliothèque de compression la plus simple pour C # que j’ai rencontrée 🙂

Vérifiez http://dotnetzip.codeplex.com/

http://dotnetzip.codeplex.com/wikipage?title=CS-Examples&referringTitle=Examples

Créez un zip téléchargeable dans ASP.NET. Cet exemple crée un zip de manière dynamic dans une méthode de publication ASP.NET, puis télécharge ce fichier zip vers le navigateur demandeur via Response.OutputStream. Aucune archive zip n’est jamais créée sur le disque.

 public void btnGo_Click (Object sender, EventArgs e) { Response.Clear(); Response.BufferOutput= false; // for large files Ssortingng ReadmeText= "This is a zip file dynamically generated at " + System.DateTime.Now.ToSsortingng("G"); ssortingng filename = System.IO.Path.GetFileName(ListOfFiles.SelectedItem.Text) + ".zip"; Response.ContentType = "application/zip"; Response.AddHeader("content-disposition", "filename=" + filename); using (ZipFile zip = new ZipFile()) { zip.AddFile(ListOfFiles.SelectedItem.Text, "files"); zip.AddEntry("Readme.txt", "", ReadmeText); zip.Save(Response.OutputStream); } Response.Close(); } 

Créez un fichier ZIP à la volée en utilisant http://www.icsharpcode.net/opensource/sharpziplib/ .

Les 3 bibliothèques que je connais sont SharpZipLib (formats polyvalents), DotNetZip (tout ZIP) et ZipStorer (petit et compact). Pas de liens, mais ils sont tous sur codeplex et trouvés via google. Les licences et les caractéristiques exactes varient.

Bonne codage.