C#将文件转成16进制码流写入数据库存起来,访问的时候再还原成PDF文件。
转自https://blog.csdn.net/liubowei_0312/article/details/53378146
适合将文件写入数据库,远程访问的时候还原
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;
}
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(hexString.Substring(i * 2, 2), 16);
return returnBytes;
}
C#将文件转成16进制码流写入数据库存起来,访问的时候再还原成PDF文件。的更多相关文章
- Linux c字符串中不可打印字符转换成16进制
本文由 www.169it.com 搜集整理 如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的 ...
- 运用C语言将图片转换成16进制的字符串(base64)
最近在写手机端的性能测试脚本的时候,发现手机在上传图片数据时,先将图片转换成一堆16进制的字符,将字符传输过去,服务器再将字符解码成图片 我们在loadrunner中测试时,就需要用C语言将图片编码. ...
- 解决nginx在记录post数据时 中文字符转成16进制的问题【转载】
1. 问题描述 nginx 在获取post数据时候,如果是中文,则转换成16进制显示在日志文件中,如下图所示. Paste_Image.png 日志格式为: log_format postdata ...
- java 将数字转成成16进制
java 将数字转成成16进制 CreationTime--2018年6月11日17点11分 Author:Marydon 1.前提 数字必须是byte类型,即[-128,127] 2.代码实现 ...
- java中如何将byte[]里面的数据转换成16进制字符串
原文链接: http://zhidao.baidu.com/link?url=RmLDjr4PtP_oUE5J2pKNZSvlHt1K7HcCh4-03Y7VkXYhJ0kawg01CtKHZc2uB ...
- Qt 将字符串转成16进制显示
最近项目用到了需要将字符串转换成16进制显示.这玩意折腾了一上午. 首先,数据块内容 struct UserData { char Head[3] = {'X','J','J'}; char Flag ...
- ip地址转换成16进制long
<span style="font-size:18px;">public class IpUtil { /** * ip地址转换成16进制long * @param i ...
- java中将汉字转换成16进制
技术交流群:233513714 /** * 将汉字转换车16进制字符串 * @param str * @return st */ public static String enUnicode(Stri ...
- 为什么android的R类要定义成16进制
联想到c语言中的宏定义:我想是一个原因 如: #define SDL_INIT_TIMER 0x00000001 #define SDL_INIT_AUDIO 0x00000010 #define S ...
随机推荐
- Zabbix 3.0 配置企业微信报警(配置zabbix-web)
一.添加报警媒体类型 Name:自定义 Type:选择script Scripts name:填写脚本名称 Script parameters:脚本参数 --corpid=XXX --corpsecr ...
- 定时杀死mysql中sleep的进程
#!/bin/sh date=`date +%Y%m%d\[%H:%M:%S]` n=`mysqladmin -uroot -p** processlist | grep -i sleep | wc ...
- Windows下的免安装版MySQL配置
原文地址:https://blog.csdn.net/qq_40277973/article/details/81517479 近日在新的电脑上安装MySQL遇到一些小问题,在此做分享,也作为日后备用 ...
- SpringBoot系列教程web篇之重定向
原文地址: SpringBoot系列教程web篇之重定向 前面介绍了spring web篇数据返回的几种常用姿势,当我们在相应一个http请求时,除了直接返回数据之外,还有另一种常见的case -&g ...
- 【记录】【windows】下查看端口是否被占用并杀死该进程
查看端口是否被占用 netstat -aon|findstr "端口号" 比如 netstat -aon|findstr "6340" 杀死该进程 taskki ...
- python入门之垃圾回收机制
目录 一 引入 二.什么是垃圾回收机制? 三.为什么要用垃圾回收机制? 四.垃圾回收机制原理分析 4.1.什么是引用计数? 4.2.引用计数扩展阅读 4.2.1 标记-清除 4.2.2 分代回收 一 ...
- MATLAB爬虫爬取股票数据
近年来,大数据盛行,有关爬虫的教程层次不穷.那么,爬虫到底是什么呢? 什么是爬虫? 百度百科是这样定义的: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种 ...
- 图片懒加载--lazyload.js的用法
这几天公司的项目已经完成的差不多了,只剩下各种优化问题.今天着重于图片加载的优化.当一个页面需要下拉很长而且又有过多的图片要加载时,就会发生很多http请求,就会拉慢网页加载速度,用户体验不友好.怎么 ...
- [转帖]期待下一个十年|CIS 2019温馨回顾(附PPT下载)
期待下一个十年|CIS 2019温馨回顾(附PPT下载) https://www.freebuf.com/fevents/222236.html shidongqi2019-12-06共26587人围 ...
- 了解HTML/CSS/JS/JQuery/ajax等前端知识
什么是HTML 超文本标记语言 浏览器通过识别相应的标签来加载页面 通过HTTP协议传输,不是编程语言 HTML常用标签 title script style link meta link body ...