ASP.NET文件打包压缩下载

ASP.NET文件打包压缩下载

一、下载或者在Nuget里安装 SharpZipLib 这个dll

二、实现实例

1、创建如下项目,结构如下

2、在一般处理程序 Handler1.ashx 文件中加入如下方法

  •  
  • C# 代码   复制
  • 
             ///<summary>
            /// 批量压缩打包下载
             /// </summary>
            /// <param name="fileName">文件名称,多个用 '|' 分割</param>
            /// <param name="filePath">文件虚拟路径,多个用 '|' 分割</param>
            public static void DownLoadFiles(string fileName, string filePath)
            {
                List<string> fileNames = fileName.Split('|').ToList();
                List<string> filePaths = filePath.Split('|').ToList();
                MemoryStream ms = new MemoryStream();
                byte[] buffer = null;
                using (ZipFile file = ZipFile.Create(ms))
                {
                    file.BeginUpdate();
                    file.NameTransform = new MyNameTransfom();
                    filePaths.ForEach(t =>
                    {
                        file.Add(HttpContext.Current.Server.MapPath(t));
                    });
    
                    file.CommitUpdate();
                    buffer = new byte[ms.Length];
                    ms.Position = 0;
                    ms.Read(buffer, 0, buffer.Length);
                }
                string ss = "Test";
                HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + ss + ".zip");
                HttpContext.Current.Response.BinaryWrite(buffer);
                HttpContext.Current.Response.Flush();
                HttpContext.Current.Response.End();
            }
    
    		
  • 三、实例方法的调用

  •  
  • 
             public void ProcessRequest(HttpContext context)
            {
                DownLoadFiles("xxx", "~/Pic/00.gif|~/Pic/02.png");
    
            }
    
    		
  • 四、查看下载效果

    打开或者保存后,Test.zip压缩文件中,就包含 Pic文件夹里面的 00.gif、02.png 两张图片

    标签: