一切福田,不離方寸,從心而覓,感無不通。

C#如何把文件夹压缩打包然后下载

public partial class _Default2 : System.Web.UI.Page{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
string Path = "c:\\de";
string resultPath = string.Empty;
bool rel =false;
TimeSpan nowTimeSpan=new TimeSpan();
resultPath=YaSuo(out rel, out nowTimeSpan);
ResponseFile(resultPath);
}

/// <summary>
/// 压缩文件
/// </summary>
/// <returns>返回压缩后的路径</returns>
public string YaSuo(out bool bo, out TimeSpan times)
{
string rarurlPath = string.Empty;
bo = false;
//压缩文件
string yasuoPathSave = "c:\\de\\TZ.rar";
string yasuoPath = "c:\\de\\temp";
System.Diagnostics.Process pro = new System.Diagnostics.Process();
pro.StartInfo.FileName = @"C:\Program Files\WinRAR\WinRAR.exe";//WinRAR所在路径
//pro.StartInfo.Arguments = "a " + yasuoPathSave + " " + yasuoPath + " -r ";//dir是你的目录名
pro.StartInfo.Arguments = string.Format("a {0} {1} -r",yasuoPathSave,yasuoPath);

pro.Start();
times = pro.TotalProcessorTime;
bo = pro.WaitForExit(60000);//设定一分钟
if (!bo)
pro.Kill();
pro.Close();
pro.Dispose();
rarurlPath = yasuoPathSave;
return rarurlPath;
}

protected void ResponseFile(string filename)
{

FileInfo file = new FileInfo(filename);//创建一个文件对象
Response.Clear();//清除所有缓存区的内容
Response.Charset = "GB2312";//定义输出字符集
Response.ContentEncoding = Encoding.Default;//输出内容的编码为默认编码
Response.AddHeader("Content-Disposition","attachment;filename="+file.Name);
//添加头信息。为“文件下载/另存为”指定默认文件名称
Response.AddHeader("Content-Length",file.Length.ToString());
//添加头文件,指定文件的大小,让浏览器显示文件下载的速度
Response.WriteFile(file.FullName);// 把文件流发送到客户端
Response.End();
}

}

from:http://www.cnblogs.com/rainbow70626/p/6021018.html