Asp.net MVC 生成zip并下载

前面有生成Excel或Word的示例,所以就不再重新写了。

这里只提供将指定文件以ZIP的方式下载。

创建一个 Zip工具类 

public class ZIPCompressUtil
    {
        public static byte[] Zip(List<string> AllFilesPath)
        {
            try
            {
                if (AllFilesPath.Count > 0)
                {
                    MemoryStream ms = new MemoryStream();
                    byte[] buffer = null;

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

                        for (int i = 0; i < AllFilesPath.Count; i++)
                        {
                            string strFile = AllFilesPath[i];
                            file.Add(strFile);
                        }


                        file.CommitUpdate();

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

        }
}
View Code

在ActionResulit中调用Zip工具类。

public ActionResult ExportZIP()
{
   List<string> fileAll = new List<string>();
   //将所有文件所在的地址添加到fileAll中
   ...操作代码

   //调用ZIP工具类,将集合传递给它
   var buffer = ZIPCompressUtil.Zip(fileAll);

   Response.AppendHeader("content-disposition", "attachment;filename=名称.zip");
   Response.BinaryWrite(buffer);
   Response.Flush();
   Response.End();
}    

如果大家有什么好的想法,可以留言,我肯定会学习并实践好再拿出来分享。

非常感谢。

如果对您有帮助,请点赞!

非常感谢您的耐心观看,您的关注是我最大的动力! 不积跬步无以至千里,不积小流无以成江海!
原文地址:https://www.cnblogs.com/sheldon-blog/p/8086350.html