界面 <a href="/Handler/FileDownLoadHandler.ashx?filePath=~ emplateclientTemplate.xlsx" target="content">模板下载</a>
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.SessionState;
namespace Web.Handler
{
/// <summary>
/// FileDownLoadHandler 的摘要说明
/// </summary>
public class FileDownLoadHandler : IHttpHandler, IRequiresSessionState
{
//目前只支持 excel 下载,后续可增加参数进行判断,以增加多种文件下载
public void ProcessRequest(HttpContext context)
{
if(context.Request.QueryString["filePath"]!=null)
{
string excelFile = HttpContext.Current.Server.MapPath(HttpContext.Current.Server.UrlDecode(context.Request.QueryString["filePath"].Trim()));
try {
FileInfo fi = new FileInfo(excelFile);//excelFile为文件在服务器上的地址
HttpResponse contextResponse = HttpContext.Current.Response;
contextResponse.Clear();
contextResponse.Buffer = true;
contextResponse.Charset = "UTF-8"; //设置了类型为中文防止乱码的出现
contextResponse.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx")); //定义输出文件和文件名
contextResponse.AppendHeader("Content-Length", fi.Length.ToString());
contextResponse.ContentEncoding = Encoding.Default;
contextResponse.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
contextResponse.WriteFile(fi.FullName);
contextResponse.Flush();
contextResponse.End();
}
catch (Exception ee) {
Log.Log4NetUtility.Error(this, ee.Message);
}
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}