string sID = GridView1.DataKeys[GridView1.SelectedIndex].Value.ToString();
            if (sID.Length < 1)
                sID = "-1";            string strSQL = "select * from 文档 where id = " + sID;
            sqlconn = new SqlConnection(conn);
            sqlconn.Open();
            SqlCommand cmd = new SqlCommand(strSQL, sqlconn);
            SqlDataReader reader = cmd.ExecuteReader();                Context.Response.Buffer = true;
                Context.Response.Clear();
                Context.Response.ContentType = reader["文档类型"].ToString();
                Context.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(reader["文档名称"].ToString()));
                Context.Response.BinaryWrite((Byte[])reader["文档数据"]);
                Context.Response.Flush();
                Context.Response.End();            sqlconn.Close();
            SelInsert(sID);
这一段是我写的从数据库下载文件的代码
下载是出现
文件名是乱码并且保存类型就是文档两个字这段程序运行完后
会出现中止线程的异常请各位高手帮忙看看

解决方案 »

  1.   


    string sID = GridView1.DataKeys[GridView1.SelectedIndex].Value.ToString(); 
                if (sID.Length < 1) 
                    sID = "-1";             string strSQL = "select * from 文档 where id = " + sID; 
                sqlconn = new SqlConnection(conn); 
                sqlconn.Open(); 
                SqlCommand cmd = new SqlCommand(strSQL, sqlconn); 
                SqlDataReader reader = cmd.ExecuteReader(); 
                if(reader.Read()) 
    {
                    Context.Response.Buffer = true; 
                    Context.Response.Clear(); 
                    Context.Response.ContentType = reader["文档类型"].ToString(); 
                    Context.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(reader["文档名称"].ToString())); 
                    Context.Response.BinaryWrite((Byte[])reader["文档数据"]); 
                    Context.Response.Flush(); 
                    Context.Response.End(); 
    }
                sqlconn.Close(); 
                SelInsert(sID); 
      

  2.   

     reader["文档类型"]
    不会是你数据字段就是中文吧!
    格式化了吗gb2312
      

  3.   

    数据库中的Blob数据类型是二进制 文件读写可以用这个数据类型 
      

  4.   

    Context.Response.Buffer = true;
    前面加上Response.Charset = "utf-8";有用嘛
      

  5.   

    1.加个Response.Charset = "GB2312";
    2.有可能是你的reader["文档名称"]有空格,去掉空格
      

  6.   

    参考:
    http://www.cnblogs.com/insus/articles/1411761.html