您的位置:首页 > 编程语言 > C#

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}_", "");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: