以HTML前端iframe - string格式显示C# asp字符串“data:image/bmp;base64”,+ base64编码

ldxq2e6h  于 2023-01-14  发布在  .NET
关注(0)|答案(1)|浏览(280)

我有一个html与asp的C#后端应用程序,在那里我想显示一个字符串的格式“数据:图像/bmp;base64”+iframe内的base64编码字符串。
服务器代码正在生成字符串:

using (MemoryStream stream = new MemoryStream())
{
   bitmap.Save(stream, ImageFormat.Bmp);
   stream.Position = 0;
   content = Convert.ToBase64String(stream.ToArray()); // base64EncodedString
}

并且前端iframe应在按下按钮时显示:

<form method="POST" runat="server">
   <asp:Button runat="server" id="button1" class="btn" Text="Next"/>
   <iframe id="iframe" runat="server" class="iframe"></iframe>
</form>
<script>
   window.onload = function () {
     document.getElementById("<%=iframe.ClientID %>").src="data:image/bmp;base64,"+"<%=content %>";
   }
</script>

内容字段被正确地填充和共享(如可以在警报中显示的),例如;“数据:图像/位图;碱基64,但iframe保持空白。
你能告诉我是什么原因造成的吗?如何解决?谢谢!
我试过使用不同的前后通信模型,包括json, AJAX 等,我也试过从asp服务器端更新iframe src,但是由于content变量是正确的,我认为问题出在前端。

myzjeezk

myzjeezk1#

好吧,你的目标是“必须”使用iframe,还是你在乎?
我的意思是,为什么不直接放入一个图像控件,甚至一个“div”,然后将图像字符串推入那个div或图像控件呢?
因此,让我们放下一个按钮,然后从一个有一列二进制图像的数据库中提取一行,通过将该二进制图像转换为base64图像字符串,我们可以自由地将该字符串插入图像中。
所以,假设这个标记:

<asp:Button ID="Button1" runat="server" Text="Get Image" OnClick="Button1_Click" />
        <br />
        <h3>My Image control</h3>
        <asp:Image ID="Image1" runat="server" Width="350px" />
        <br />

        <h3>My div</h3>
        <div id="mydiv" runat="server">
        </div>

后面的代码是:

protected void Button1_Click(object sender, EventArgs e)
{
    using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4))
    {
        string strSQL =
            "SELECT ID, MyImage FROM Fighters WHERE ID = 4";
        using (SqlCommand cmdSQL = new SqlCommand(strSQL, conn))
        {
            conn.Open();
            DataTable rstData = new DataTable();
            rstData.Load(cmdSQL.ExecuteReader());
            string PicString = 
                @"Data:Image/png;base64," + Convert.ToBase64String((byte[])rstData.Rows[0]["MyImage"]);

            Image1.ImageUrl = PicString;        // shove into image control

            Image MyImage = new Image();
            MyImage.Width = 200;
            MyImage.ImageUrl = PicString;
            mydiv.Controls.Add(MyImage);          // add image to "div"
        }
    }
}

现在,当我们点击按钮时,我们会得到这个:

所以,你是否需要/想要一个iFrame还不是很清楚?

相关问题