閱讀561 返回首頁    go 阿裏雲 go 技術社區[雲棲]


如何將服務端的多個文件打包下載(轉)

正在開發的係統中包含了這部分功能。下麵將有關重點的代碼粘貼出來,給大家參考

我用到了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
    }
轉自:https://www.cnblogs.com/chenxizhang/archive/2009/12/23/1630844.html

最後更新:2017-04-02 06:51:29

  上一篇:go HGE 係列教材(3) --- 初試 HGE
  下一篇:go 麵試智力題2