1、打开工程,引用点击鼠标右键,管理NuGet程序包

3、引用帮助文件,批量将多个文件压缩为一个压缩文件,以下为压缩算法
4、using System.IO;using System.Web;using ICSharpCode.SharpZipLib.Core;using ICSharpCod髫潋啜缅e.SharpZipLib.Zip;namespace Intco.Framing.Web.Controllers{ public class MyNameTransfom : INameTransform { #region INameTransform 成员 public string TransformDirectory(string name) { return null; } public string TransformFile(string name) { return Path.GetFileName(name); } #endregion /// <summary> /// 批量进行多个文件压缩到一个文件、 /// <param name="files">文件列表(绝对路径)</param> 这里用的数组,你可以用list 等或者 /// <param name="zipFileName">生成的zip文件名称</param> /// </summary> public void ZipFileDownload(string[] files, string zipFileName, HttpContext Context) { MemoryStream ms = new MemoryStream(); byte[] buffer = null; using (ZipFile file = ZipFile.Create(ms)) { file.BeginUpdate(); file.NameTransform = new MyNameTransfom(); foreach (var item in files) { if (File.Exists(item)) file.Add(item); } file.CommitUpdate(); buffer = new byte[ms.Length]; ms.Position = 0; ms.Read(buffer, 0, buffer.Length); //读取文件内容(1次读ms.Length/1024M) ms.Flush(); ms.Close(); } Context.Response.Clear(); Context.Response.Buffer = true; Context.Response.ContentType = "application/x-zip-compressed"; Context.Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(zipFileName)); Context.Response.BinaryWrite(buffer); Context.Response.Flush(); Context.Response.End(); } }}
5、把你自己文件的绝对路径传到以上方法中,我的文件放在共享文件夹中,以//192.168.开头
6、Guid judgeOrderGuid; if (Guid.TryParse(guid, out judgeOrderGuid)) { string[] judgeOrderDocs = _judgeOrderDocService.GetJudgeOrderDocs(judgeOrderGuid).Where(i => i.FilePath != "").Select(i => i.FilePath).ToArray();//根据唯一值找出这个评审订单下的所有文件,放入一个数组中如果你的路径是相对路径,你需要把相对路径转化为绝对路径,然后放入数组 MyNameTransfom mt = new MyNameTransfom();//声明压缩算法类 mt.ZipFileDownload(judgeOrderDocs, DateTime.Now.ToString("yyyyMMddhhMmss") + "_医疗评审单文件.zip", System.Web.HttpContext.Current); } return Content("<script>alert('下载失败!');window.location.href='index.html';</script>", "text/html");