您的位置:首页 > 数据库

c# 使用base64在数据库中存取文件

2007-05-04 11:13 447 查看
对应的数据表的字段类型是:text

保存的时候:

   string strContent = XmlLib.XML_TextToDoc(TextBox_Content.Text);
   //toBase64
   strContent = Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(strContent));
 再插入到数据表中.

打开的时候

    string strSQL = "Select * From sys_DocManage Where [ID]="+s_strID;
    string strConn = Session["ConnString"].ToString();
    OleDbConnection objConn = new OleDbConnection(strConn);
    objConn.Open();

    OleDbCommand objComm = new OleDbCommand(strSQL, objConn);
    OleDbDataReader objReader = objComm.ExecuteReader();

    if(objReader.Read())
    { 
     string strContent = objReader["Content"].ToString();
     //cover base64 to string
     if (strContent != "")
     {

  //转成文本便于编辑
      byte[] ayByte = Convert.FromBase64String(strContent);
      strContent = System.Text.Encoding.Default.GetString(ayByte);
     }
     TextBox_Content.Text = strContent;
     txtFieldName.Text = objReader["Name"].ToString();
    }

    objReader.Close();
    objConn.Close(); 

下载的时候

          string id = Request["id"];
            if (id != null && id != string.Empty)
            {
                string pattern = @"^[1-9]/d*$";
                Regex reg = new Regex(pattern);
                if (reg.IsMatch(id))
                {
                    string connStr = Session["ConnString"].ToString();
                    OleDbConnection conn = new OleDbConnection(connStr);
                    conn.Open();
                    //
                    OleDbCommand cmd = new OleDbCommand();
                   
                    cmd.Connection = conn;
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = "SELECT Content,Name,FileType FROM sys_DocManage WHERE ID=" + id;
               
                    OleDbDataReader dr = cmd.ExecuteReader();
                    dr.Read();
                    int fileDataCol = 0;
                    string filename = dr["Name"].ToString();
                    string fileType = dr["FileType"].ToString();
                    string fileContent = dr["Content"].ToString();

                    byte[] a = Convert.FromBase64String(fileContent);//base64 的下载
                    
                    //Byte[] a = System.Text.Encoding.Default.GetBytes(fileContent);//非base64 的下载
                    Response.ContentType = "Application/msword";
                    //你把这一句换成相应类型即可
                    Response.AddHeader("Content-Disposition", "attachment; filename=" + filename + "." + fileType );
                    this.Response.Clear();
                    System.IO.Stream fs = this.Response.OutputStream;
                    fs.Write(a, 0, a.Length);
                    fs.Close();
                    this.Response.End();
                }
                else
                {
                    Response.Write("Error: 参数错误");
                }
            }
            else
            {
                Response.Write("Error: 参数错误");
            }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐