如何將服務端的多個文件打包下載(轉)
正在開發的係統中包含了這部分功能。下麵將有關重點的代碼粘貼出來,給大家參考
我用到了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