zoukankan      html  css  js  c++  java
  • 解决用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();
                }
            }

  • 相关阅读:
    VS 2017 没有工具栏中没有Report Viewer的解决方案
    数据类型和C#关系对应
    .NET CORE部署各种问题
    .NET CORE AutoMapper使用
    .NET CORE 配置Swagger文档
    window快捷登陆linux的的设置方式(设置ssh的config配置)
    linux安装mongodb并启动
    windows更改DNS设置
    scp的使用
    浏览器缓存机制
  • 原文地址:https://www.cnblogs.com/xieon1986/p/3447623.html
Copyright © 2011-2022 走看看