• 解决用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();
                }
            }

  • 相关阅读:
    IE8下网页中的视频会遮挡住顶层DIV的解决办法
    Synchronized 偏向锁、轻量级锁、自旋锁、锁消除
    Lock的使用
    Synchronized与ReentrantLock区别总结(简单粗暴,一目了然)
    Java线程池 面试题(精简)
    Java 线程池的认识和使用
    bat等大公司常考java多线程面试题
    Java面试题必备知识之ThreadLocal
    阿里面试题
    Spring中Bean的生命周期
  • 原文地址:https://www.cnblogs.com/xieon1986/p/3447623.html
Copyright © 2020-2023  润新知