public static void WebExportFile(string fileName, byte[] fileData)
{
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.Expires = 0;
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
HttpContext.Current.Response.HeaderEncoding = System.Text.Encoding.UTF8;
//写入头信息。
string ext = System.IO.Path.GetExtension(fileName);
if (ext == ".xls")
{
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
}
else if (ext == ".doc")
{
HttpContext.Current.Response.ContentType = "application/ms-word";
}
else
{
HttpContext.Current.Response.ContentType = "application/octet-stream";
}
fileName = BLLUtil.FilterFileName(fileName);
if (HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"].Contains("Trident"))
{
//IE浏览器
fileName = HttpContext.Current.Server.UrlEncode(fileName);
}
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
//bool isDecode = false;
//if (isDecode)
//{
// HttpContext.Current.Response.Write(HttpUtility.UrlDecode(fileData));
//}
//else
//{
HttpContext.Current.Response.BinaryWrite(fileData);
//}
//context.Response.End();
HttpContext.Current.ApplicationInstance.CompleteRequest();//取代Response.End()
}
public static string FilterFileName(string fileName)
{
return Regex.Replace(fileName, "[\\/:*?\"<>|]", "_");
//return ("[^a-zA-Z0-9]", "").replaceAll("\\s+", "_");
}