asp.net實現(xiàn)文件夾及文件壓縮,并實現(xiàn)下載

字號:


    步驟
    1)先引用 ICSharpCode.SharpZipLib.dll;
    2).cs文件引入
    using System.IO;
    using System.Text;
    using ICSharpCode.SharpZipLib.Checksums;
    using ICSharpCode.SharpZipLib.Zip;
    using ICSharpCode.SharpZipLib.GZip;
    3)代碼
    #region 下列代碼為壓縮并下載代碼
    ZipOutputStream zos = null;
    String strBaseDir = "";
    void dlZipDir(string strPath, string strFileName)
    {
    MemoryStream ms = null;
    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);
    strBaseDir = strPath + "";
    addZipEntry(strBaseDir);
    zos.Finish();
    zos.Close();
    Response.Clear();
    Response.BinaryWrite(ms.ToArray());
    Response.End();
    }
    void addZipEntry(string PathStr)
    {
    DirectoryInfo di = new DirectoryInfo(PathStr);
    foreach (DirectoryInfo item in di.GetDirectories())
    {
    addZipEntry(item.FullName);
    }
    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.Replace(strBaseDir, "");
    ZipEntry entry = new ZipEntry(strEntryName);
    zos.PutNextEntry(entry);
    zos.Write(buffer, 0, buffer.Length);
    fs.Close();
    }
    }
    PRotected void Button2_Click(object sender, EventArgs e)
    {
    string userPath ="D:華海實訓(qqview.com)各級賬號和密碼";
    dlZipDir(userPath, "華海實訓(qqview.com)服務賬號");
    }
    #endregion