我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才能存入数据库中.
要这里有关数据的 *** 作略写,我将一些代码段写成方法,方便直接调用.
//根据文件名(完全路径)
public byte[] SetImageToByteArray(string fileName)
{
FileStream fs = new FileStream(fileName, FileMode.Open)
int streamLength = (int)fs.Length
byte[] image = new byte[streamLength]
fs.Read(image, 0, streamLength)
fs.Close()
return image
}
//另外,在ASP.NET中通过FileUpload控件得到的图像文件可以通过以下方法
public byte[] SetImageToByteArray(FileUpload FileUpload1)
{
Stream stream = FileUpload1.PostedFile.InputStream
byte[] photo = new byte[FileUpload1.PostedFile.ContentLength]
stream.Read(photo, 0, FileUpload1.PostedFile.ContentLength)
stream.Close()
return photo
}
2.从SQL Server数据库读取Image类型的数据,并转换成bytes[]或Image图像文件
//要使用SqlDataReader要加载using System.Data.SqlClient命名空间
//将数据库中的Image类型转换成byte[]
public byte[] SetImage(SqlDataReader reader)
{
return (byte[])reader["Image"]//Image为数据库中存放Image类型字段
}
//将byte[]转换成Image图像类型
//加载以下命名空间using System.Drawing/using System.IO
using System.Data.SqlClient*/
public Image SetByteToImage(byte[] mybyte)
{
Image image
MemoryStream mymemorystream = new MemoryStream(mybyte,0, mybyte.Length)
image = Image.FromStream(mymemorystream)
return image
}
有2个办法。1.使用 System.Text.Encoding.Default.GetBytes(bStr)
2.使用Convert.FromB64String(bStr)
从数据库读出的是Image类型存储的二进制数据,是还原后文件(图片或文件)读出时直接赋值给byte[]就行了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)