热门IT资讯网

c#读取个人签名到内存

发表于:2024-11-24 作者:热门IT资讯网编辑
编辑最后更新 2024年11月24日,// //方法功能:读取个人签名到内存 // // // // private byte[] LoadMa
//         //方法功能:读取个人签名到内存         //         //         //         //        private byte[] LoadMarkImage(string szSql)        {            //bool mResult = false;            byte[] m_bytFileBody = null;            System.IO.MemoryStream oStream = null;            System.IO.BinaryWriter oWriter = null;            try            {                //string szSelectCmd = "SELECT c.MarkBody FROM OA_ESignature c where c.CO='XF01' and c.UserId='" + userid + "'";                //if (m_oDbHelper == null)                //{                //    m_oDbHelper = new DbHelper();                //}                //m_oDbHelper.OpenDbResource();                                 DbCommand mCommand = m_oDbHelper.CreateDbCommand();                mCommand.CommandType = CommandType.Text;                mCommand.CommandText = szSql;                IDataReader oReader = mCommand.ExecuteReader(System.Data.CommandBehavior.SequentialAccess);               // LogCentral.CurrentLogger.LogInfo();                if (oReader.Read())                {                    if (!oReader.IsDBNull(0))                    {                        int bufferSize = 500;                         // Size of the BLOB buffer.                        byte[] outbyte = new byte[bufferSize];        // The BLOB byte[] buffer to be filled by GetBytes.                        long retval;                                  // The bytes returned from GetBytes.                        long startIndex = 0;                          // The starting position in the BLOB output.                        // Get ACL By BLOB ColumnType                        oStream = new System.IO.MemoryStream();                        oWriter = new System.IO.BinaryWriter(oStream, System.Text.Encoding.UTF8);                        startIndex = 0;                        retval = oReader.GetBytes(0, startIndex, outbyte, 0, bufferSize); //ItemACL                        // Continue reading and writing while there are bytes beyond the size of the buffer.                        while (retval == bufferSize)                        {                            oWriter.Write(outbyte);                            oWriter.Flush();                            startIndex += bufferSize;                            retval = oReader.GetBytes(0, startIndex, outbyte, 0, bufferSize); //ItemACL                        }                        // Write the remaining buffer.                        oWriter.Write(outbyte, 0, (int)retval);                    }                    //m_szFileType = oReader.GetString(1).ToString();                   // mResult = true;                }                //else                //{                //    mResult = false;                //}                oReader.Close();                oReader = null;                m_bytFileBody = oStream.GetBuffer();                //LogCentral.CurrentLogger.LogInfo("m_bytFileBody:" + m_bytFileBody.ToString());                LogCentral.CurrentLogger.LogInfo("m_bytFileBody:" + m_bytFileBody.Length);            }            catch (Exception e)            {                LogCentral.CurrentLogger.LogInfo(e.ToString());                //mResult = false;            }            finally            {                //m_oDbHelper.CloseDbResource();                try                {                    if (oWriter != null)                    {                        oWriter.Flush();                        oWriter.Close();                    }                }                catch { }                try                {                    if (oStream != null)                        oStream.Close();                }                catch { }            }            return m_bytFileBody;        }


0