C#将文件转成16进制码流写入数据库存起来,访问的时候再还原成PDF文件

C#将文件转成16进制码流写入数据库存起来,访问的时候再还原成PDF文件。

适合将文件写入数据库,远程访问的时候还原

  1. 首先把文件转成十六进制文件流
            public void FileToStream()
        {
            try
            {
                IPdfClassBll pdfClassBll = DataFactory.GetPdfClass();
                FileStream fs = new FileStream(@"文件路径/***.PDF", FileMode.Open);
                BinaryReader br = new BinaryReader(fs);
                Byte[] byData = br.ReadBytes((int)fs.Length);
                StringBuilder strResult = new StringBuilder(byData.Length * 8);
                string binary = byteToHexStr(byData);
                PdfInfo pdfinfo = new PdfInfo();
                pdfinfo.PRTNUM = "PH001";//创建的新文件名
                pdfinfo.PDFREPORT = binary;
                pdfClassBll.Add(pdfinfo);
                fs.Close();
                br.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("文件写入失败~!");
            }
        }

        /// <summary>
        /// 字节数组转16进制字符串
        /// </summary>
        /// <param name="bytes"></param>
        /// <returns></returns>
        public static string byteToHexStr(byte[] bytes)
        {
            string returnStr = "";
            if (bytes != null)
            {
                for (int i = 0; i < bytes.Length; i++)
                {
                    returnStr += bytes[i].ToString("X2");
                }
            }
            return returnStr;
        }
        /// <summary>

2.读取数据库中的 PDF流 信息,并写入文件
=======================

        public void StreamToFile(string prtnum)
        {
            try
            {
                //写入位置
                SampleConfig config = MonitorConfigManager.GetInstance().GetSampleConfig();
                string reportPath = config.ReportPath;
                reportPath = reportPath + "\\" + oSampleInfo.PRTNUM + ".pdf";
                IPdfClassBll pdfClassBll = DataFactory.GetPdfClass();
                PdfInfo pdfInfo = pdfClassBll.GetPdfReportByPRTNUM(prtnum);
                string strPdf = pdfInfo.PDFREPORT;
                byte[] bytes = strToToHexByte(strPdf);
                FileStream fileStream = new FileStream(reportPath, FileMode.OpenOrCreate, FileAccess.Write);
                fileStream.Write(bytes, 0, bytes.Length);
                BinaryWriter binaryWriter = new BinaryWriter(fileStream);
                binaryWriter.Write(bytes);
                binaryWriter.Close();
                fileStream.Close();
            }
            catch (Exception ex)
            {

            }
        }
        /// <summary>
        /// 16进制字符串转为文字
        /// </summary>
        /// <param name="hexString"></param>
        /// <returns></returns>
        private static byte[] strToToHexByte(string hexString)
        {
            hexString = hexString.Replace(" ", "");
            if ((hexString.Length % 2) != 0)
                hexString += " ";
            byte[] returnBytes = new byte[hexString.Length / 2];
            for (int i = 0; i < returnBytes.Length; i++)
                returnBytes[i] = Convert.ToByte(hexStringSubstring(i * 2, 2), 16);

   return returnBytes;
        }

## 欢迎大家学习,请尊重原创,转载注明出处 ##

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值