魔灵雪010 2021-04-21 17:20 采纳率: 93.8%
浏览 42
已采纳

Base64在ASP.NET中怎么放到Image控件上啊,求大神指点下

我做了一个图片转码入库,但是入库出来之后怎么把它解码放Image控件上,我能想到的方法就是解码到本地路径,然后放路径,但是可以实现不用解到本地,直接解码放到Image控件上啊求指点

页面代码如下:

    <form id="form1" runat="server">
        <div id="content">
            <asp:FileUpload ID="Fu_Demo1" runat="server" />
            <asp:TextBox ID="txt_imgname" runat="server" />
            <asp:Button ID="Btn_Demo1" Text="获取" runat="server" OnClick="Btn_Demo1_Click" />
            <asp:Repeater ID="rp_imagesShow" runat="server">
                <ItemTemplate>
                    <div class="show">
                        <a href="#"><h3><%# Eval("Name") %></h3></a>
                        <asp:Image CssClass="imagesItem" ImageUrl="<%# Eval("Img") %>"" runat="server" />
                    </div>
                </ItemTemplate>
            </asp:Repeater>
        </div>
    </form>

我的转码代码如下:可以转成功,也可入库

            if (string.IsNullOrEmpty(txt_imgname.Text))
            {
                Response.Write("<script>alert('请输入图片名!')</script>");
                return;
            }
            string imgname = txt_imgname.Text.Trim();
            string filename = Fu_Demo1.FileName;
            string fix = filename.Substring(filename.LastIndexOf('.')+1).ToLower();
            filename = Guid.NewGuid().ToString() + "." + fix;
            string newpath = "MyFile/" + filename;
            Fu_Demo1.SaveAs(Server.MapPath(newpath));

            newpath = Server.MapPath(".")+"\\"+newpath;

            if (File.Exists(newpath))
            {
                var byteArray = File.ReadAllBytes(newpath);
                string base64str = Convert.ToBase64String(byteArray);
                //Response.Write($"<script>alert('{base64str}')</script>");
                string sql = $"insert ImagesToBase values('{imgname}','{base64str}')";
                SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=ImageToBase;Integrated Security=True");
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql,conn);
                int result= cmd.ExecuteNonQuery();
                conn.Close();
                if (result==1)
                {
                    File.Delete(newpath);
                    if (!File.Exists(newpath))
                    {
                        Response.Write("<script>alert('新增成功!')</script>");
                        return;
                    }
                }
                Response.Write("<script>alert('新增失败!')</script>");
                return;
            }
            Response.Write($"<script>alert('未找到文件!')</script>");

转码就是这样子了;

解码,我定义了个实体类对应数据库:

    public class Images
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Img { get; set; }
    }

查询方法:

        private DataTable GetAllImages()
        {
            string sql = $"select * from ImagesToBase";
            SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=ImageToBase;Integrated Security=True");
            conn.Open();
            SqlDataAdapter dap = new SqlDataAdapter(sql,conn);
            DataSet ds = new DataSet();
            dap.Fill(ds);
            DataTable tab = ds.Tables[0];
            conn.Close();
            return tab;
        }

解码这里,不会搞了,没头苍蝇乱撞,毫无办法:

            List<Images> imgmods = new List<Images>();
            DataTable dt = GetAllImages();
            foreach (DataRow item in dt.Rows)
            {
                Images imgmod = new Images();
                imgmod.Id = Convert.ToInt32(item["id"]);
                imgmod.Name = item["name"].ToString();


                string imgbackstr = item["img"].ToString();
                var bt = Convert.FromBase64String(imgbackstr);

                // 搞到这步咱不会搞了,求大佬解惑啊,如果我的思路不对,还请指导指导。
                imgmods.Add(imgmod);
            }
            rp_imagesShow.DataSource = imgmods;
            rp_imagesShow.DataBind();

  • 写回答

2条回答 默认 最新

  • 封印di恶魔 2021-04-21 17:44
    关注

    base64可以直接用img标签显示,要拼上前缀   

    src="data:image/jpeg;base64,(base64字符串)"

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。
  • ¥15 SQL Server analysis services 服务安装失败