数据库类型是image,二进制数据存储,请问后端怎么编写读取数据库的数据显示图片呢

数据库类型是image,二进制数据存储,请问后端怎么编写读取数据库的数据显示图片呢,

前段:
DataImageUrlField="tupiansc" DataImageUrlFormatString="~/admin/thing.aspx/tupiansc{0}.jpg" HeaderText="图片">

后端可以使用C#读取数据库中image类型的字段,将其转换为二进制数组,然后使用Response.BinaryWrite()方法将其输出到前端页面。代码示例如下:

using (SqlConnection conn = new SqlConnection(connectionString))
{
    //打开数据库连接
    conn.Open();
    //创建SqlCommand对象
    SqlCommand cmd = new SqlCommand("SELECT ImageData FROM Images WHERE ImageId = @ImageId", conn);
    //为参数赋值
    cmd.Parameters.AddWithValue("@ImageId", imageId);
    //执行查询
    SqlDataReader reader = cmd.ExecuteReader();
    if (reader.Read())
    {
        //读取二进制数据
        byte[] imageData = (byte[])reader["ImageData"];
        //设置响应头
        Response.ContentType = "image/jpeg";
        //输出图片
        Response.BinaryWrite(imageData);
    }
    else
    {
        //如果没有查询到图片,输出"No Image"
        Response.Write("No Image");
    }
    //关闭数据库连接
    conn.Close();
}

这样图片就能在前端页面中正常显示了。

注意:上面的代码假设你已经有了数据库连接字符串,并且已经知道要显示的图片的ID了。

先把数据读出来,通过工具进行转换即可,

public partial class SystemManage_ModulePicture : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
         if (!IsPostBack)
        {
           string strModuleID=Request.QueryString["ModuleID"].ToString();
            Module instance = new Module();
            byte[] imgData = instance.GetOneModule(strModuleID).IconFile;           //得到二进制图片数据
 
            if (imgData != null && imgData.Length != 0)
            {
                try
                {
                    System.IO.MemoryStream ms = new System.IO.MemoryStream(imgData);
                    System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
                    img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);        //展现图片
                }
                catch
                {
 
                }
            }
        }
    }
}