类别:程序开发

日期:2022-05-06 浏览:1008 评论:0

原文链接https://blog.csdn.net/liubowei_0312/article/details/53378146

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;
        }


本文标题:C#将文件转成16进制码流写入数据库存起来,访问的时候再还原成PDF文件。
本文链接:https://vtzw.com/post/984.html
作者授权:除特别说明外,本文由 零一 原创编译并授权 零一的世界 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。
 您阅读本篇文章共花了: 

 可能感兴趣的文章

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。

最新留言