首页  ·  知识 ·  编程语言
将服务端的多个文件打包下载
博超  博客园  .NET  编辑:博超   图片来源:网络
我用到了ICSharpCode.SharpZipLib这个dll.据我所知,凡是现在做压缩和解压缩之类的程序,很少有人会不用这个组件的。赞一个先

正在开发的系统中包含了这部分功能。下面将有关重点的代码粘贴出来,给大家参考


我用到了ICSharpCode.SharpZipLib这个dll. 据我所知,凡是现在做压缩和解压缩之类的程序,很少有人会不用这个组件的。赞一个先


 


1. 核心代码


 


            MemoryStream ms = new MemoryStream();

            byte[] buffer = null;


            using (ZipFile file = ZipFile.Create(ms))

            {

                file.BeginUpdate();

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



                file.Add(Server.MapPath("~/images/1.jpg"));

                file.Add(Server.MapPath("~/images/2.jpg"));

                file.Add(Server.MapPath("~/images/3.jpg"));

                

                file.CommitUpdate();


                buffer = new byte[ms.Length];

                ms.Position = 0;

                ms.Read(buffer, 0, buffer.Length);

            }



            Response.AddHeader("content-disposition", "attachment;filename=Test.zip");

            Response.BinaryWrite(buffer);

            Response.Flush();

            Response.End();

 

另外,我专门写了一个NameTransfom

    public class MyNameTransfom : ICSharpCode.SharpZipLib.Core.INameTransform {


        #region INameTransform 成员


        public string TransformDirectory(string name)

        {

            return null;

        }


        public string TransformFile(string name)

        {

            return Path.GetFileName(name);

        }


        #endregion

    }

2. 测试效果

blob.png

本文作者:博超 来源:博客园
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读