您的位置:首页 > 编程学习 > ASP.NET

ASP.NET文件打包压缩下载

更多 2016/11/22 来源:ASP.NET学习浏览量:1638
学习标签: ASP.NET下载
本文导读:在ASP.NET项目编程中,有时需要将多个文件一起打包压缩后,提供给用户下载,我们可以使用ICSharpCode.SharpZipLib这个dll,来实现文件打包后,生成压缩文件供用户下载。下面简单介绍实现方法

一、下载或者在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 两张图片

 

收藏
252
很赞
345