数据库类型是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
{
}
}
}
}
}