C# 下载多个文件打zip包的问题
2015-10-29 09:18
441 查看
导入 using ICSharpCode.SharpZipLib.Zip;
protected void btn_pkg_Click(object sender, EventArgs e)
{
List<AttachmentInfo> ai = (new Pz.BLL.AttachmentInfo()).GetModelList("MailId=" + copyid.Value + "");
List<string> files = new List<string>();
foreach (AttachmentInfo i in ai)
{
files.Add(Server.MapPath(i.Link));
}
if (files.Count == 1)
NormalDownload(files[0]);
else if (files.Count > 1)
PkgDownload(files, DateTime.Now.ToString("yyyy年MM月dd日HH时mm分ss秒") + "打包下载.zip");
}
protected void PkgDownload(IEnumerable<string> files, string zipFileName)
{
MemoryStream ms = new MemoryStream();
byte[] buffer = null;
using (ZipFile file = ZipFile.Create(ms))
{
file.BeginUpdate();
file.NameTransform = new FileNameTransfom();
foreach (var item in files)
{
file.Add(item);
}
file.CommitUpdate();
buffer = new byte[ms.Length];
ms.Position = 0;
ms.Read(buffer, 0, buffer.Length);
}
Response.AddHeader("content-disposition", "attachment;filename=" + zipFileName);
Response.BinaryWrite(buffer);
Response.Flush();
Response.End();
}
protected class FileNameTransfom : ICSharpCode.SharpZipLib.Core.INameTransform
{
public string TransformDirectory(string name)
{
return null;
}
public string TransformFile(string name)
{
return Regex.Replace(Path.GetFileName(name), @"\d{17}_", "");
}
}
protected void btn_pkg_Click(object sender, EventArgs e)
{
List<AttachmentInfo> ai = (new Pz.BLL.AttachmentInfo()).GetModelList("MailId=" + copyid.Value + "");
List<string> files = new List<string>();
foreach (AttachmentInfo i in ai)
{
files.Add(Server.MapPath(i.Link));
}
if (files.Count == 1)
NormalDownload(files[0]);
else if (files.Count > 1)
PkgDownload(files, DateTime.Now.ToString("yyyy年MM月dd日HH时mm分ss秒") + "打包下载.zip");
}
protected void PkgDownload(IEnumerable<string> files, string zipFileName)
{
MemoryStream ms = new MemoryStream();
byte[] buffer = null;
using (ZipFile file = ZipFile.Create(ms))
{
file.BeginUpdate();
file.NameTransform = new FileNameTransfom();
foreach (var item in files)
{
file.Add(item);
}
file.CommitUpdate();
buffer = new byte[ms.Length];
ms.Position = 0;
ms.Read(buffer, 0, buffer.Length);
}
Response.AddHeader("content-disposition", "attachment;filename=" + zipFileName);
Response.BinaryWrite(buffer);
Response.Flush();
Response.End();
}
protected class FileNameTransfom : ICSharpCode.SharpZipLib.Core.INameTransform
{
public string TransformDirectory(string name)
{
return null;
}
public string TransformFile(string name)
{
return Regex.Replace(Path.GetFileName(name), @"\d{17}_", "");
}
}
相关文章推荐
- C# 下载文件名重命名的问题
- C#获取IP及MAC地址 方法
- c#面向对象
- C# 一步一步完成一个简单的计算器 第二步---实现单目运算
- C#编程--运算符
- 带你一步步的了解“C#事件”机制
- c#随机生成中文姓名
- c# ListView的网格简单用法
- C#编程--输入和输出
- c# 语言基础
- C# 之 管理配置文件(二)
- C#写的windows应用程序打包
- 2.C#的输入、输出与运算符、数据类型
- Head First C#(赛狗日)
- Head First C#(赛狗日)
- c#—— Task.FromResult 的使用
- C# ManualResetEvent和AutoResetEvent 使用笔记
- C#操作剪贴板实现复制粘贴
- c# 5.0——async 和 await
- C#学习之委托