ASP.NET文件打包压缩下载
ASP.NET文件打包压缩下载一、下载或者在Nuget里安装 SharpZipLib 这个dll
二、实现实例
1、创建如下项目,结构如下
2、在一般处理程序 Handler1.ashx 文件中加入如下方法
///<summary>
/// 批量压缩打包下载
/// </summary>
/// <param name="fileName">文件名称,多个用 '|' 分割</param>
/// <param name="filePath">文件虚拟路径,多个用 '|' 分割</param>
public static void DownLoadFiles(string fileName, string filePath)
{
List<string> fileNames = fileName.Split('|').ToList();
List<string> 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 = "Test";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + ss + ".zip");
HttpContext.Current.Response.BinaryWrite(buffer);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
}
三、实例方法的调用
public void ProcessRequest(HttpContext context)
{
DownLoadFiles("xxx", "~/Pic/00.gif|~/Pic/02.png");
}
四、查看下载效果
打开或者保存后,Test.zip压缩文件中,就包含 Pic文件夹里面的 00.gif、02.png 两张图片