Questo è il modo per farlo nel modo DotNetZip: DI garantire per DotNetZip perché ho usato ed è di gran lunga la libreria di compressione più semplice per C# che ho incontrato :)
check http://dotnetzip.codeplex.com/
http://dotnetzip.codeplex.com/wikipage?title=CS-Examples&referringTitle=Examples
Creare un zip scaricabile all'interno di ASP.NET. Questo esempio crea uno zip in modo dinamico all'interno di un metodo di postback ASP.NET, quindi scarica tale file zip nel browser richiedente tramite Response.OutputStream. Nessun archivio zip è mai stato creato su disco.
public void btnGo_Click (Object sender, EventArgs e)
{
Response.Clear();
Response.BufferOutput= false; // for large files
String ReadmeText= "This is a zip file dynamically generated at " + System.DateTime.Now.ToString("G");
string 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();
}
fonte
2010-10-21 05:59:17
È grandioso ... meritevole di un upvote. Sai se esiste un modo in tempo reale per conoscere la dimensione compressa? Voglio essere in grado di comunicare ai miei utenti la dimensione di ciò che scaricheranno se compressi. – pearcewg
@pearcewg, penso che in questo caso la soluzione dipenda dal tuo fabbisogno. Se sai quale sarà il contenuto degli archivi, puoi comprimere i file prima della generazione della pagina e mostrare solo le dimensioni degli archivi. Se il contenuto degli archivi può variare, è un compito non banale. I miei pensieri sono: 1. metti le informazioni sulla dimensione dei file compressi nel database 2. mostra le dimensioni approssimative dei file compressi in base alle statistiche di compressione. – bniwredyc
funziona come un fascino. Grazie –