当前位置:编程学习 > C#/ASP.NET >>

IE下载文件的问题,FF正常。

下载文件的代码如下,在另外的页面中文件名显示正常,证明上传得时候没问题。


string sql = "SELECT title,content FROM Documents WHERE doc_id = " + f_id; ;

        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["gitlConnectionString"].ConnectionString);
        conn.Open();
        SqlCommand cmd = new SqlCommand(sql, conn);
        SqlDataReader reader = cmd.ExecuteReader();

        if (reader.Read())
        {
            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "UTF-8";
    string fname = (string)reader[0];
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + fname); 
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
            Response.ContentType = "application";
            Page.EnableViewState = false;
            Response.BinaryWrite((byte[])reader[1]);
            //result = true;
        }

        reader.Close();
        reader.Dispose();
        cmd.Dispose();
        conn.Close();
        conn.Dispose();



在IE里面中文文件名就是乱码,在FF中就一切正常。难道是浏览器设置的问题?请专家解答。 --------------------编程问答-------------------- System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload, System.Text.Encoding.UTF8)
Response.AppendHeader("Content-Disposition", "attachment;filename=" System.Web.HttpUtility.UrlEncode(fname, System.Text.Encoding.UTF8)); 
--------------------编程问答-------------------- 在你的代码里,只是对内容编码,没有对附加头文件名编码. --------------------编程问答-------------------- 把这一行改改 :Response.ContentType = "application";
--------------------编程问答-------------------- http://blog.csdn.net/goody9807/articles/138871.aspx

这里应该就是你的问题 --------------------编程问答-------------------- 需要进行编码,   
      
用UTF8编码试一下  


FileName = String.Format("attachment; FileName={0}", HttpUtility.UrlEncode(strFileName,System.Text.Encoding.UTF8));   
    
Response.ContentEncoding = System.Text.Encoding.UTF8;   
Response.AppendHeader("Content-Disposition", FileName, Encoding.UTF8))
 
   --------------------编程问答-------------------- 楼上的方法不行了,出来的文件名是%XX%XX,根本就是URL,哪里是什么汉字阿。 --------------------编程问答--------------------
//判断下是不是ff,如果不是则编码,不是则不需要    
string UserAgent = Request.ServerVariables["http_user_agent"].ToLower();
string fname = (string)reader[0];
if(UserAgent.IndexOf("firefox") == -1)//不是ff时
    fname = HttpUtility.UrlEncode(fname, Encoding.UTF8);//utf8编码中文
Response.AppendHeader("Content-Disposition", "attachment;filename=" + fname); 
--------------------编程问答-------------------- ???????????????两种浏览器的默认制式不同??
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,