none
ASP.NET Getting Started FAQ: Bagaimana cara untuk menzip file atau folder? RRS feed

  • Diskusi Umum

  • Hal ini bisa dilakukan dengan menggunakan java.util.zip.ZipFile, ICSharpCode.SharpZipLib.Zip atau library assembly lainnya.

    Anda bisa menggunakan java.util.zip.ZipFile dalam mengelola zip files: http://msdn.microsoft.com/en-us/magazine/cc164129.aspx.

    Anda juga bisa mencoba SharpZipLib dan DLL filenya bisa didownload dari link berikut: http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx

    Anda dapat memilih edisi mana yang anda butuhkan setelah proses download selesai. Sampel dibawah akan mendemonstrasikan bagaimana cara untuk menzip files.

    using ICSharpCode.SharpZipLib.Zip; 

    using System.IO; 

     

    ZipOutputStream zos = null; 

    protected void Button1_Click(object sender, EventArgs e) 

        string[] pathCollection = new string[2]; 

        PathCellction[0] = "c:\\folder1"; 

        PathCellction[1] = "c:\\folder2";   

        StartZip(pathCollection, "filename");  

     

    protected void StartZip(string[] pathCollection, string strFileName) 

        MemoryStream ms; 

        Response.ContentType = "application/octet-stream"; 

        strFileName = HttpUtility.UrlEncode(strFileName).Replace('+', ' '); 

        Response.AddHeader("Content-Disposition", "attachment; filename=" + strFileName + ".zip"); 

        ms = new MemoryStream(); 

        zos = new ZipOutputStream(ms); 

        addZipEntry(pathCollection); 

        ms.Close(); 

        zos.Finish(); 

        zos.Close(); 

        Response.Clear(); 

        Response.BinaryWrite(ms.ToArray()); 

        Response.End(); 

     

    protected void addZipEntry(string[] pathCollection) 

        for (int i = 0; i < pathCollection.Length; i++) 

        { 

            string strPath = pathCollection[i]; 

            addZipEntry(strPath, strPath.LastIndexOf("\\") + 1); 

        } 

     

    protected void addZipEntry(string strPath, int baseIndex) 

        DirectoryInfo di = new DirectoryInfo(strPath); 

        foreach (DirectoryInfo item in di.GetDirectories()) 

        { 

            addZipEntry(item.FullName, baseIndex); 

        } 

        foreach (FileInfo item in di.GetFiles()) 

        { 

            FileStream fs = File.OpenRead(item.FullName); 

            byte[] buffer = new byte[fs.Length]; 

            fs.Read(buffer, 0, buffer.Length); 

            string strEntryName = item.FullName.Remove(0, baseIndex); 

            ZipEntry entry = new ZipEntry(strEntryName); 

            zos.PutNextEntry(entry); 

            zos.Write(buffer, 0, buffer.Length); 

            fs.Close(); 

        } 

    }

     

    Juga, ada sebuah GZipStream class yang baru diperkenalkan dalam .Net Framework 2.0 dibawah System.IO.Compression. Ini ditujukan untuk GZip menggunakan RFC1952 dan berbeda dari Zip. 

    Thread terkait: http://forums.asp.net/p/1252894/2326757.aspx#2326757


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Kamis, 30 Juni 2011 07.54
    Moderator