我想从数据库中调用图像到ASP:中继器控制,但我正在获得

本文关键字:image src quot qu Byte System 调用 数据库 图像 控制 中继器 | 更新日期: 2023-09-27 18:11:52

这是我在aspx文件中的代码

cnn.Open();
    SqlDataAdapter da1 = new SqlDataAdapter("select * from carousel", cnn);
    DataTable dt1 = new DataTable();
    da1.Fill(dt1);
    Rp1.DataSource = dt1;
    Rp1.DataBind();
cnn.Close();

这是中继器

<asp:Repeater id="Rp1" runat="server">
        <ItemTemplate>
        <div class="item">
            <asp:Image ID="Image1" ImageUrl='<%# Eval("image") %>' runat="server" />
        </div>
        </ItemTemplate>
        <footertemplate></footertemplate>
</asp:Repeater>

我尝试了一切,但我每次都得到结果,我真的想要一些帮助,我是新的ASP。净

我想从数据库中调用图像到ASP:中继器控制,但我正在获得<image src"System.Byte[]&qu

这是因为来自数据库的值是一个字节数组,表示图像的实际数据。而img标签的src需要一个图像的URL。基本上有两种方法可以做到这一点……

  1. 创建一个单独的页面(或者最好是ASHX处理程序),它只返回图像的数据(没有HTML或类似的东西),并链接到该页面。
  2. Base-64编码字节数组并将其作为数据URI包含在src属性中。

网上有很多关于第一种选择的教程。这是通过谷歌搜索找到的,还有其他的。本质上,处理程序要做的是接受查询字符串上的标识符,使用该标识符从数据库中获取图像,然后将适当的标头和内容写入响应。src属性的URL将是该处理程序。比如:

ImageUrl='<# "~/handler.ashx?id=" + Eval("id") #>'

(或任何数据绑定数据用作图像标识符的内容)

假设您的图像列名在数据库"ImageName"中,那么

解决方案1:如果你的图像在根目录

 <img src='<%#Eval("ImageName")%>' alt="" />
OR

 <asp:Image ID="Image1" ImageUrl='<%#Eval("ImageName")%>' runat="server" />

解决方案二:如果你的图片在images文件夹

<img src='<%# "images/" + Eval("ImageName") %>'  alt=""/>

<asp:Image ID="Image1" ImageUrl='<%# "images/" + Eval("ImageName") %>' runat="server" />

你的最终解决方案:

<asp:Repeater id="Rp1" runat="server">
           <ItemTemplate>
        <div class="item">
<img src='<%#Eval("ImageName")%>' alt="" />
OR
<asp:Image ID="Image1" ImageUrl='<%# "images/" + Eval("ImageName") %>' runat="server" />
        </div>
        </ItemTemplate>
        <footertemplate></footertemplate>
</asp:Repeater> 

您需要为IMG HTML标签转换URI:

<img src="<%# System.Text.Encoding.ASCII.GetString(Eval("bynarydatacolumn")) %>" />

或同等学历。