public
void
DownFile(
string
filePath ,
string
fileName )
{
Encoding encoding;
string
outputFileName;
Debug.Assert(HttpContext.ApplicationInstance.Request.UserAgent !=
null
,
"HttpContext.ApplicationInstance.Request.UserAgent != null"
);
string
browser = HttpContext.ApplicationInstance.Request.UserAgent.ToUpper();
if
(browser.Contains(
"MS"
) && browser.Contains(
"IE"
))
{
outputFileName = HttpUtility.UrlEncode(filePath);
encoding = Encoding.Default;
}
else
if
(browser.Contains(
"FIREFOX"
))
{
outputFileName = fileName;
encoding = Encoding.GetEncoding(
"GB2312"
);
}
else
{
outputFileName = HttpUtility.UrlEncode(fileName);
encoding = Encoding.Default;
}
string
absoluFilePath = Server.MapPath(filePath);
FileStream fs =
new
FileStream(absoluFilePath, FileMode.Open);
byte
[] bytes =
new
byte
[(
int
)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
HttpContext.ApplicationInstance.Response.Clear();
HttpContext.ApplicationInstance.Response.Buffer =
true
;
HttpContext.ApplicationInstance.Response.ContentEncoding = encoding;
HttpContext.ApplicationInstance.Response.AddHeader(
"Content-Disposition"
,
string
.Format(
"attachment; filename={0}"
,
string
.IsNullOrEmpty(outputFileName) ? DateTime.Now.ToString(
"yyyyMMddHHmmssfff"
) : outputFileName));
Response.BinaryWrite(bytes);
Response.Flush();
HttpContext.ApplicationInstance.Response.End();
}