如何将存放在数据库BLOB字段的图像显示在asp.net的IMAGE控件中

http://www.80diy.com/home/20050510/20/3996217.html

1 楼singlepine(小山)回复于 2005-05-10 21:11:27 得分 20

<asp:TemplateColumn   HeaderText="照片">  
              <ItemTemplate>  
                  <asp:Image   Runat=server   ID="Image1"  
                    ImageUrl='<%#   FormatURL(DataBinder.Eval(Container.DataItem,   "Image"))   %>'   />  
              </ItemTemplate>  
          </asp:TemplateColumn>  
  protected   string   FormatURL(object   strArgument)  
      {  
                return   //此处将数据库中的BLOB转换为图片即可;  
      }  
  Top

2 楼wdcszl(Leithon)回复于 2005-05-10 21:18:10 得分 0

先在一个页面里面显示图片  
  然后利用WebRequest.GetReponse方法读取页面的内容(也就是图片了)  
  试一下  
  Top

3 楼boytomato(深爱一人叫颖的女孩!)回复于 2005-05-10 21:23:32 得分 0

http://search.csdn.net/Expert/TopicView3.asp?id=1641286Top

4 楼boytomato(深爱一人叫颖的女孩!)回复于 2005-05-10 21:25:46 得分 0

http://support.microsoft.com/kb/317016/Top

5 楼frequenter(frequenter)回复于 2005-05-10 21:43:50 得分 0

谢谢大家,只是我会用什么HTML语言,只会用WEB控件,还请大家想想!!不要用绑定!!!Top

6 楼frequenter(frequenter)回复于 2005-05-10 21:53:09 得分 0

读取存取BLOB数据都没有问题了,就是怎么显示?Top

7 楼frequenter(frequenter)回复于 2005-05-10 22:10:44 得分 0

string   productID   =   e.Item.Cells[2].Text;  
  string   strSql;  
  myConnection.Open();  
  strSql="select   image   from   one   where   ID="+productID;  
  MySqlCom.CommandText=strSql;  
  MySqlDataReader   reader=MySqlCom.ExecuteReader();  
  reader.Read();  
  byte[]   photo;  
  photo=(byte[])reader[0];  
  MemoryStream   buf=new   MemoryStream((byte[])reader[0]);  
  Response.Write(buf.Length);  
  String   filename="abcd.bmp";  
  FileStream   fs=new   FileStream   (filename,FileMode.Create);  
  fs.Write(photo,0,(int)buf.Length   );  
  fs.Close();  
  buf=null;  
  fs=null;  
  Image1.ImageUrl="abcd.bmp";  
   
   
  myConnection.Close();Top

8 楼hchxxzx(NET?摸到一点门槛)回复于 2005-05-10 22:36:45 得分 80

在页面中,放一个Image控件,在后台指定它的链接地址如下:  
  ----------------------------------------------------------------------  
  //为方便,写一个固定ID号tmp_id=103  
  this.Image1.ImageUrl   =   "showimg.aspx?tmp_id=103"   ;  
   
   
  下面是显示图片的页面showimg.aspx后台代码,该页面不需要放任何东西.  
  --------------------------------------------------------------------  
  //创建数据库连接  
  OracleConnection   myConnection   =   new   OracleConnection(ConfigurationSettings.AppSettings["sysDSN"]);  
  myConnection.Open();  
   
  //打开数据库  
  OracleCommand   myCommand   =   myConnection.CreateCommand();  
  string   sql   =   "select   tmp_blob   from   tmp   where   tmp_id   =   103";  
  myCommand.CommandText   =   sql;  
  OracleDataReader   myRead   =   myCommand.ExecuteReader();  
   
  //开始读取  
  myRead.Read();  
  OracleLob   myLob   =   myRead.GetOracleLob(0);  
  //长度是long,转为int32  
  int   myLength   =   Convert.ToInt32(myLob.Length);    
  Byte[]   Buffer   =   new   byte[myLength];        
  myLob.Read(Buffer,0,myLength);  
   
  //输出  
  this.Response.Clear();  
  //输出mime类型,根据上传的文件取到的mimetype,是什么我忘记了,自己写上,不过不写也没有关系.  
  this.Response.ContentType   =   "";  
  this.Response.BinaryWrite(Buffer);  
  this.Response.End();  
     
  Top

9 楼net_lover(【孟子E章】)回复于 2005-05-10 22:40:56 得分 0

http://dotnet.aspx.cc/ShowList.aspx?id=1Top

10 楼hchxxzx(NET?摸到一点门槛)回复于 2005-05-10 22:44:19 得分 0

修改一下,更简单一点:  
   
  //创建数据库连接  
  OracleConnection   myConnection   =   new   OracleConnection(ConfigurationSettings.AppSettings["sysDSN"]);  
  myConnection.Open();  
   
  //打开数据库  
  OracleCommand   myCommand   =   myConnection.CreateCommand();  
  string   sql   =   "select   tmp_blob   from   tmp   where   tmp_id   =   103";  
  myCommand.CommandText   =   sql;  
  OracleDataReader   myRead   =   myCommand.ExecuteReader();  
   
  //开始读取  
  myRead.Read();  
  Byte[]   Buffer   =   (Byte[])myRead[0];  
   
  //输出  
  this.Response.Clear();  
  //输出mime类型,根据上传的文件取到的mimetype  
  this.Response.ContentType   =   "";  
  this.Response.BinaryWrite(Buffer);  
  this.Response.End();   
   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值