stand on the shoulders of giants

【ASP.NET】 GridView 显示图片

分为两种情况

1. 图片以链接形式存储在数据库中,表中某个字段存储图片的路径

2. 图片存储在数据库中(BLOB)
     在计算机中,BLOB是指二进制长对象。BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)

第一种:图片以链接形式存储在数据库中
解决方式比较简单, 用GridView的ImageFiled,把它和表的相应字段对应即可。
Abhijit Jana 的这篇文章说的比较清楚 http://www.codeproject.com/KB/aspnet/GridImage.aspx
设置ImageFiled的属性DataImageUrlFiled=(field name in Database)

Code is very simple

 

第二种 图片存储在数据库中(BLOB)

这种情况比较复杂
可以先看一下这篇文章:How To Read and Write BLOB Data by Using ADO.NET with Visual C# .NET 

图片写入到数据库BLOB字段:
1. 读图片文件到流
    FileStream fs = new FileStream(@"C:\winnt\Gone Fishing.BMP", FileMode.OpenOrCreate, FileAccess.Read);
2. 从流读到byte数组。
    byte[] MyData= new byte[fs.Length];
    fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));
3. 直接赋给字段
    myRow["imgField"] = MyData;

写一个图片文件到数据库


从数据库读BLOB
1. 从数据库读取图片字段到byte数组 
DataRow myRow=ds.Tables["MyImages"].Rows[0];
byte[] MyData= new byte[0];        
MyData =  (byte[])myRow["imgField"];
2. 由Byte数组创建图片文件
FileStream fs = new FileStream(@"C:\winnt\Gone Fishing2.BMP", FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(MyData, 0,MyData.GetUpperBound(0));

从数据库读BLOB到图片

 

GridView怎么做呢?这里

posted @ 2008-12-05 13:19  DylanWind  阅读(6114)  评论(0编辑  收藏