如何显示数据库中的图像(存储为byte [])

时间:2015-07-30 05:31:22

标签: html asp.net

我试图从数据库中列出我页面上的图像。当我评估图像时,它只显示文本"System.byte"

以下是代码:

 <asp:Repeater ID="repCategory" runat="server">
     <ItemTemplate>
         <div id="DescofTiles">
             <p id="tiles1"><%#Eval("categoryID")   %>: </p>
             <p id="tiles2"><%#Eval("categoryName") %> </p>
             <br />
             <p id="tiles3"><%#Eval("Description")  %> </p>
             <br />
             <p id="tiles4"><%#Eval("Picture")      %> </p>
             <p id="tiles5">
                 <a id="udb" href="#">
                     <img src="Contents/images/update.png" /></a>
                 <a id="udb" href="DeleteCategory.aspx?id=<%#Eval("categoryID")%>">
                     <img src="Contents/images/delete.jpg" /></a>

                 <asp:LinkButton ID="LinkButton2" runat="server"
                   OnCommand="LinkButton1_Click"
                   CommandArgument='<%#Eval("categoryID")%>'>
                   <img src="Contents/images/delete.jpg" alt="delete group" />
                 </asp:LinkButton>
             </p>

我该怎么做才能让它显示为图像,而不是文字&#34; System.byte&#34;?

1 个答案:

答案 0 :(得分:0)

您似乎将图像存储在数据库中,然后将它们加载到byte[]中。 (这是正确的吗?你的问题并不清楚。)

以下是显示这些图像的一些选项:

将图像存储到(临时)文件

  • 将数据库中的数据写入服务器上的文件,例如:
  • File.WriteAllBytes(Server.MapPath("~/temp/image.png", byteArrayFromDb));
  • 然后在您的网页上添加Image控件并相应地设置ImageUrl
  • <asp:Image ImageUrl="~/temp/image.png ... /&gt;`

将图片数据嵌入数据URI

  • 向您的网页添加Image控件,例如<asp:Image runat="server" id="img" .../>
  • 在您的代码隐藏中
  • ,将byte[]转换为图片URI:
  • img.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(byteArrayFromDb);

通过HttpHandler提供图片

  • 实现一个HttpHandler,它接受一个查询字符串参数(例如图像记录的主键)
  • 在web.config文件中注册处理程序(例如,名称为ImageHandler.ashx
  • 使用ImageUrl="ImageHandler.ashx?id=123"
  • 等图片网址
  • 有关详细信息,请参阅this question