C#将文件转成16进制码流写入数据库存起来,访问的时候再还原成PDF文件
2016-11-28 15:14
387 查看
C#将文件转成16进制码流写入数据库存起来,访问的时候再还原成PDF文件。
适合将文件写入数据库,远程访问的时候还原
首先把文件转成十六进制文件流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; }
## 欢迎大家学习,请尊重原创,转载注明出处 ##
相关文章推荐
- 用MYSQLDUMP备份生成的文件还原到另外的电脑后数据写入失败
- 动态创建文本文件并写入数据 避免正由另一进程使用,因此该进程无法访问该文件。的问题
- C# 连接 Oracle,读取Blob字段数据,存到文件中去,包括pdf等等
- asp.net(c#)如何读取上传过程中的.txt文件中的数据,并将其写入数据库的
- C# 向共享文件中写入数据
- c# 向Excel文件写入数据(Workbook 和Worksheet )
- C#打开或者创建一个文件,然后向其末尾写入数据的方法
- c#中采用OLEDB方式来读取EXCEL文件和将数据写入EXCEL文件
- linux命令dd:数据备份与恢复,切割还原大文件,测试读取写入磁盘速度
- c#将文件写入mysql中和从mysql中读数据
- C#实现杀掉MSSQL中数据库当前连接的所有进程(进行数据还原的时候需要用到)
- [网络收集]asp.net(c#) 保存xml数据(将数据写入到xml文件中)
- C#访问oracle数据库的时候,数据回滚出现问题
- c#中采用OLEDB方式来读取EXCEL文件和将数据写入EXCEL文件
- c#中采用OLEDB方式来读取EXCEL文件和将数据写入EXCEL文件
- 写入UTF-16文件的时候,不要忘记在文件头添加BOM
- c#中采用OLEDB方式来读取EXCEL文件和将数据写入EXCEL文件
- C# 将数据写入PDF文档
- C++向C盘写入文件、保存文件的时候 提示 拒绝访问 解决方案
- C#通过流写入一行数据到文件的方法