压缩文件

View Code
using ICSharpCode.SharpZipLib;

using ICSharpCode.SharpZipLib.Checksums;

using ICSharpCode.SharpZipLib.Zip;

using ICSharpCode.SharpZipLib.GZip;

using ICSharpCode.SharpZipLib.BZip2;


using ICSharpCode.SharpZipLib.Zip.Compression;

using ICSharpCode.SharpZipLib.Zip.Compression.Streams;

 public class MyNameTransfom : ICSharpCode.SharpZipLib.Core.INameTransform
    {

        #region INameTransform 成员

        public string TransformDirectory(string name)
        {
            return null;
        }

        public string TransformFile(string name)
        {
            return Path.GetFileName(name);
        }

        #endregion
    }

例子:
string imgs = Convert.ToString(dr["imgsUrl"]);
                 string name = dr["JingDianName"].ToString();
                 if (imgs != null & imgs != "")
                 {

                     string[] sArray = imgs.Split('|');
                     IList<string> listItem = new List<string>();
                   
                     MemoryStream ms = new MemoryStream();
                     byte[] buffer = null;

                     using (ZipFile file = ZipFile.Create(ms))
                     {
                         file.BeginUpdate();
                         file.NameTransform = new MyNameTransfom();//通过这个名称格式化器,可以将里面的文件名进行一些处理。默认情况下,会自动根据文件的路径在zip中创建有关的文件夹。
                        
                         foreach (string item in sArray)
                         {
                             string img_url = "~" + item;

                             file.Add(Server.MapPath(img_url));
                         }
                         file.CommitUpdate();

                         buffer = new byte[ms.Length];
                         ms.Position = 0;
                         ms.Read(buffer, 0, buffer.Length);
                     }


                     Response.AddHeader("content-disposition", "attachment;filename=Images.zip");
                     Response.BinaryWrite(buffer);
                     Response.Flush();
                     Response.End();
                 }
原文地址:https://www.cnblogs.com/chai1338/p/2693436.html