重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

ASP.NET中怎么打包下载Zip文件-创新互联

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

成都创新互联-专业网站定制、快速模板网站建设、高性价比资兴网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式资兴网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖资兴地区。费用合理售后完善,十多年实体公司更值得信赖。

第一步   下载dll


在Nuget里安装下面这个dllASP.NET中怎么打包下载Zip文件

第二步   下载方法


项目结构
ASP.NET中怎么打包下载Zip文件


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


///
  /// 批量打包下载 Author:吴双
  /// 
  /// 文件名称
  /// 文件虚拟路径
  public static void DownLoadFiles(string fileName, string filePath)
  {
   List fileNames = fileName.Split('|').ToList();
   List 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文件


看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联网站建设公司,的支持。


网站标题:ASP.NET中怎么打包下载Zip文件-创新互联
网页路径:http://cqcxhl.cn/article/psscg.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP