参考:https://download.youkuaiyun.com/download/yuanmeng0910/4086437
步骤一:引用ICSharpCode.SharpZipLib.dll 相关下载方法
protected void downloadWord_Click()
{
List<string> paths = new List<string>();
string file = "/Files/word/2019-12/19/测试.docx";
paths.Add(model.path);
Download(paths, DateTime.Now.ToString("yyyyMMddHHssmm") + ".zip");
}
private void Download(IEnumerable<string> files, string zipFileName)
{
//根据所选文件打包下载
MemoryStream ms = new MemoryStream();
byte[] buffer = null;
using (ZipFile file = ZipFile.Create(ms))
{
file.BeginUpdate();
file.NameTransform = new MyNameTransfom();//通过这个名称格式化器,可以将里面的文件名进行一些处理。默认情况下,会自动根据文件的路径在zip中创建有关的文件夹。
foreach (var item in files)
{
file.Add(Server.MapPath( 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();
}
步骤二:上述两个相关方法涉及的下载辅助类
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
}