在ASP.NET中从数据库获取并显示图片

ASP.NET应用程序中,直接将数据库中的图片显示在Image控件上并不像设置静态图片那样简单。通常,需要通过一些间接的方法来实现这一功能。一个常见的解决方案是使用Generic Handler。本文将介绍如何添加一个Generic Handler到ASP.NET Web应用程序,并展示如何通过它从数据库中检索图片并在Image控件上显示。

步骤1:添加Generic Handler

首先,需要在ASP.NETWeb应用程序中添加一个Generic Handler。在这个示例中,将这个Handler命名为'getImageFromDB.ashx'。默认情况下,它将实现IHttpHandler接口,包括ProcessRequest和IsReusable方法。还将添加一个名为'GetImage'的方法,并修改ProcessRequest方法。

步骤2:实现Handler

以下是实现Handler的代码示例:

using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Web; using System.Data; using System.Data.SqlClient; namespace MyWebApplication { public class getImageFromDB : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.Clear(); if (!String.IsNullOrEmpty(context.Request.QueryString["empID"])) { int id = Int32.Parse(context.Request.QueryString["empID"]); Image image = GetImage(id); context.Response.ContentType = "image/jpeg"; image.Save(context.Response.OutputStream, ImageFormat.Jpeg); } else { context.Response.ContentType = "text/html"; context.Response.Write("

Need a valid id

"); } } public bool IsReusable { get { return false; } } private Image GetImage(int empID) { MemoryStream memoryStream = new MemoryStream(); string connectionString = "Password=PWD;Persist Security Info=True;User ID=USER;Initial Catalog=SampleDatabase;Data Source=SQLSERVER"; using (SqlConnection sqlConnection = new SqlConnection(connectionString)) { using (SqlCommand sqlCommand = new SqlCommand("SELECT emp_id, emp_name, emp_image FROM Employee where emp_id = " + empID.ToString(), sqlConnection)) { sqlConnection.Open(); SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(); if (sqlDataReader.HasRows) { sqlDataReader.Read(); byte[] btImage = (byte[])sqlDataReader["emp_image"]; memoryStream = new MemoryStream(btImage, false); } } sqlConnection.Close(); } return Image.FromStream(memoryStream); } } }

步骤3:调用Handler并显示图片

private void GetImageFromDatabase(int empID) { imageControl.ImageUrl = "getImageFromDB.ashx?empID=" + empID.ToString(); }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485