概述
在数据对接时,经常需要把数据库(如:MySql, Oracle)中的blob对象转换为图片格式,对于C#处理这些问题有疑问的同学可以继续往下看(本文以MySql为测试数据库)。
一、如何给数据库Blob字段插入数据
数据库中Blob对象对应C#的类型为byte数组,定义数据库对象如下:
public class UserEntity
{
public int id { get; set;}
public string name { get; set; }
public byte[] avator { get; set; }
}
下面测试可以将本地图片文件作为资源,转换为字节流赋值给Blob字段:
UserEntity userEntity = new UserEntity()
{
name = "Tom"
};
using (FileStream stream = new FileStream("D:\\avator.png", FileMode.Open))
{
userEntity.avator = new byte[stream.Length];
stream.Read(userEntity.avator);
}
将上一步创建的数据库对象 UserEntity 调用封装好的插入数据库方法
public void Insert(UserEntity userEntity)
{
string sql = "INSERT INTO `user` (`name`, `avator`) VALUES (@name, @avator)";
connectionFactory.GetConnection().ExecuteCommand(sql, new { name= userEntity.name, avator = userEntity.avator });
}
插入成功,结果如下
插入数据库结果
二、如何把数据库Blob字段转换为文件保存在本地
先获取前一步插入的用户数据,然后把头像字段写到文件
UserEntity userEntity = new UserRepository().GetUser("tom");
using (FileStream fs = new FileStream("D:\\avatorBlob_fromdb.png", FileMode.OpenOrCreate))
{
fs.Write(userEntity.avator);
fs.Flush();
}
结果如下,可以直接查看图片
转换为图片结果
三、html img 元素如何直接展示 数据库blob 对象
给img src属性前加上 “data:image/png;base64,” 注意,blob字符串和类型之间有逗号
<img src="data:image/png;base64,iVBORw0KGgoAAA.../img>
网友评论