JS文件
var Arrurl = [{ "name": "尽职调查.pdf" }, { "name": "简介.pdf" }, { "name": "信托合同.pdf" }]; //ajax调用ashx $.ajax({ type: 'post', url: "../DownZip.ashx", data: { url: JSON.stringify(Arrurl), //需打包文件的文件名拼接json数组 GoodsName: "打包好", //打包后的压缩包名称 }, success: function (ret) { //执行返回压缩包路径下载 window.location.href = ret; } })
ashx文件
//产品名称 string GoodsName = context.Request["GoodsName"]; //JSON数组文件路径 var itemJson = new JavaScriptSerializer().Deserialize<List<Dictionary<string, string>>>(context.Request["url"].ToString()); //List集合 foreach循环添加路径 List<string> listFile = new List<string>(); foreach (var item in itemJson) { listFile.Add(@"D:\atmoney\files\UserPic\" + item["name"].ToString() + ""); } //压缩包保存路径 string downzipurl = @"D:\atmoney\files\GoodsDownLoad\" + GoodsName + ".zip"; //执行打包 ZipFile(listFile, downzipurl, 0); //返回文件路径 context.Response.Write(@"http://www.xx.cn/files/GoodsDownLoad/" + GoodsName + ".zip");
/// <summary> /// 压缩duo个文件 /// </summary> /// <param name="fileToZip">要进行压缩的文件名</param> /// <param name="zipedFile">压缩后生成的压缩文件名</param> public static void ZipFile(List<string> fileToZipS, string zipedFile, int Level) { foreach (string fileToZip in fileToZipS) { //如果文件没有找到,则报错 if (!File.Exists(fileToZip)) { throw new System.IO.FileNotFoundException("指定要压缩的文件: " +fileToZip+ " 不存在!"); break; } } using (FileStream ZipFile = File.Create(zipedFile)) { using (ZipOutputStream ZipStream = new ZipOutputStream(ZipFile)) { foreach (string fileToZip in fileToZipS) { string fileName = fileToZip.Substring(fileToZip.LastIndexOf("\\")); using (FileStream fs = File.OpenRead(fileToZip)) { byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); fs.Close(); ZipEntry ZipEntry = new ZipEntry(fileName); ZipStream.PutNextEntry(ZipEntry); ZipStream.SetLevel(Level); ZipStream.Write(buffer, 0, buffer.Length); } } ZipStream.Finish(); ZipStream.Close(); } } }