以弹出文件形式提供下载时出现乱码时。
public void ToOpen(string serverfilpath, string filename)
{
FileStream fileStream = new FileStream(serverfilpath, FileMode.Open);
long fileSize = fileStream.Length;
HttpContext.Current.Response.ContentType = "application/octet-stream";
////inline --- 有IE在线打开选项
////attachment --- 作为附件下载
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=\"" + UTF_FileName(filename) + "\";");
HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString());
HttpContext.Current.Response.ContentType = "application/octet-stream";
byte[] fileBuffer = new byte[fileSize];
fileStream.Read(fileBuffer, 0, (int)fileSize);
HttpContext.Current.Response.BinaryWrite(fileBuffer);
fileStream.Close();
HttpContext.Current.Response.End();
}
private string UTF_FileName(string filename)
{
//IE中要编码下,FF中则不用,不然出现文件名乱码
string browser = this.Context.Request.UserAgent.ToUpper();
if (browser.Contains("FIREFOX") == true)
{
return filename;
}
return HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8);
}