解决用ASP.NET下载文件时,文件名为乱码的问题
关键就一句: string strTemp = System.Web.HttpUtility.UrlEncode(strName, System.Text.Encoding.UTF8);//解决文件名乱码
protected string strConn = Common.Config.GetAppSettingsKeyValue("DBConnectString");
protected System.Data.OleDb.OleDbConnection conn;
protected System.Data.OleDb.OleDbCommand cmd;
protected System.Data.OleDb.OleDbDataReader dr;
private void Download(string field, string id)
{
try
{
string strCmd = "select * from doc_body where id = " + id;
conn = new OleDbConnection(strConn);
cmd = new OleDbCommand(strCmd,conn);
conn.Open();
dr = cmd.ExecuteReader();
dr.Read();
int nSize = (int)dr["doc_size"];
string strContentType = (string)dr["ContentType"];
string strName = (string)dr["doc_name"];
byte [] data = (byte[])dr[field];
if(nSize == 0)
{
message.Text = "<font color=#0000ff>没有文件下载!</font>";
}
else
{
Response.Clear();
Response.Buffer = true;
//Response.Charset = "utf-8";
//Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");
//utf-8,gb2312,big5
Response.ContentType = strContentType;
//application/ms-excel,application/ms-word,application/ms-txt,application/ms-html或其他浏览器可直接支持文档
string strTemp = System.Web.HttpUtility.UrlEncode(strName, System.Text.Encoding.UTF8);//解决文件名乱码
Response.AppendHeader("content-disposition", "attachment;filename=" + strTemp);//附件下载
//Response.AppendHeader("content-disposition", "online;filename=" + strName);//在线打开
Response.OutputStream.Write(data, 0, nSize);
}
}
catch(Exception exp)
{
Common.utility.MessageBox(this,"下载失败!/n错误信息:/n"+exp.Message);
}
finally
{
conn.Close();
}
}