ASP.NET中怎么打包下载Zip文件

ASP.NET中怎么打包下载Zip文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

第一步   下载dll

在Nuget里安装下面这个dll

ASP.NET中怎么打包下载Zip文件

第二步   下载方法

项目结构

ASP.NET中怎么打包下载Zip文件


在我们的一般处理程序中加入如下方法

///<summary>   /// 批量打包下载 Author:吴双   /// </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 = "批量下载" + fileNames[0] + "等";    HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + ss + ".zip");    HttpContext.Current.Response.BinaryWrite(buffer);    HttpContext.Current.Response.Flush();    HttpContext.Current.Response.End();   }

第三步  调用方法

试着下载我们Pic目录下的文件吧!

 public void ProcessRequest(HttpContext context)   {    //context.Response.ContentType = "text/plain";    //context.Response.Write("Hello World");    DownLoadFiles("xxx", "~/Pic/00.gif|~/Pic/02.png");   }

第四步   测试结果

把项目跑起来吧!

ASP.NET中怎么打包下载Zip文件


 下面是打包结果:

ASP.NET中怎么打包下载Zip文件


第五步   最后的浅谈
见过很多朋友和同事,他们不明白如何直接下载文件到浏览器。

实际上我上一句话,就已经是错误的了。文件并没有下载到浏览器中,而是随着HTTP请求,你Request将参数等一系列信息,流入到下游服务器。而你的HTTP服务器,接收到请求后,经过处理,再向下游客户端,返回一系列的Response结果。

ASP.NET中怎么打包下载Zip文件


那么你需要做的仅仅是将你的文件流读到响应流当中,并且在浏览器得到你的头部通知时,自然会给你当作文件下载。

ASP.NET中怎么打包下载Zip文件


看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。