html
<button type="button" class="layui-btn layui-btn-sm" onclick="compress()">文件压缩</button>
js
function compress() {
$.post('/FileCompress/compress', {}, function () {});
}
Controller
using COMMON;
using System;
using System.Collections.Generic;
using System.Web.Mvc;
namespace SFMVC3._0.Controllers
{
public class FileCompressController : Controller
{
/// <summary>
/// 获取文件
/// </summary>
/// <returns></returns>
public string getFiles()
{
List<string> NoiceList = new List<string>();
NoiceList.Add(Server.MapPath(String.Format("/upload/{0}", "Photo")));//压缩文件的位置,Photo为文件的名字
string downzipname = Guid.NewGuid().ToString() + ".zip";
string downzipurl = Server.MapPath(String.Format("/upload/{0}", downzipname));//把压缩后文件夹放入的位置,在方法中自动创建downzipname为文件夹的名字
FileCompressHelper.ZipFile(NoiceList, downzipurl, 0);
return downzipname;
}
}
}
FileCompressHelper
using System.Collections.Generic;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
namespace COMMON
{
public class FileCompressHelper
{
/// <summary>
/// 压缩文件的方法
/// </summary>
/// <param name="fileToZipS">传入的文件List</param>
/// <param name="zipedFile">压缩文件夹的地址</param>
/// <param name="Level">0</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();
}
}
}
}
}