9
votes

ASP.NET Téléchargez tous les fichiers comme ZIP

J'ai un dossier sur mon serveur Web qui contient des centaines de fichiers MP3. J'aimerais fournir l'option d'un utilisateur de télécharger une archive zippée de chaque MP3 dans le répertoire à partir d'une page Web.

Je veux compresser les fichiers uniquement à titre programmatique lorsque cela est nécessaire. Parce que le fichier zip sera assez important, je pense que je devrai envoyer le fichier zip au flux de réponses comme étant zippé , pour des raisons de performance.

est-ce possible? Comment puis-je le faire?


2 commentaires

Une fois votre réponse obtenue, assurez-vous de désactiver la compression lorsque vous ajoutez des fichiers au fichier ZIP ... Les fichiers MP3 ne compressent pas très bien ....


Bien sûr, parce qu'ils sont déjà compressés. Merci pour le rappel.


4 Réponses :


2
votes

Vous pouvez ajouter un gestionnaire personnalisé (fichier .hx) qui prend le chemin du fichier, lit le fichier la compresse à l'aide d'une bibliothèque de compression et renvoie les octets à l'utilisateur final avec le type de contenu correct.


0 commentaires

8
votes

Je ne peux pas croire à quel point c'était facile. Après avoir lu Ce , Voici le code que j'ai utilisé: xxx


2 commentaires

Zipfile zip = nouveau zipfile (), lorsque j'essaie de créer, il montre "Vous ne pouvez pas créer une instance de classe ziphile de classe statique". Je ne sais pas pourquoi


@Bimaldas, c'est parce que la classe ZipFile de ma réponse provient de la bibliothèque DotNetZip. Votre projet fait référence à system.io.compression.zipfile .



12
votes

Voici le code que j'utilise pour le faire avec DotNetZip - fonctionne très bien. De toute évidence, vous devrez fournir les variables pour la sortiefilename, le nom de fenteName et Inversolders. XXX


6 commentaires

Si vous ne souhaitez pas que votre sous-arbitre de répertoire dans les archives ZIP, utilisez simplement la surcharge de la méthode zipfile.addselectedfiles ("*. *", Foldername, direcotryinzip, Inversesfols);


@Marquito En fait, je pense que la réponse acceptée serait mieux si elle avait utilisé cette surcharge.


Hey Ray, j'ai besoin d'une petite aide liée à la fabrication de fichiers zip. Si vous pouvez aider. Faites-moi savoir ici. Ce serait content :) merci


Quelle est ta question?


Quelle est la réponse ici? Il dit que la réponse n'existe pas dans le contexte. Essayé webresponse, httpreesponse, ne fonctionne pas


Mon code vit dans un httphandler. «Réponse» vient du httpContext transmis à ProcessRequest.



1
votes
            foreach (GridViewRow gvrow in grdUSPS.Rows)
            {
                  CheckBox chk = (CheckBox)gvrow.FindControl("chkSelect");
                if (chk.Checked)
                {
                string fileName = gvrow.Cells[1].Text;

                string filePath = Server.MapPathfilename);
                zip.AddFile(filePath, "files");
                }
            }
            Response.Clear();
            Response.AddHeader("Content-Disposition", "attachment; filename=DownloadedFile.zip");
            Response.ContentType = "application/zip";
            zip.Save(Response.OutputStream);
            Response.End();

0 commentaires