在ASP.NET环境中,处理图像文件是一项常见的任务。本文将介绍如何将图像文件存储到数据库中,以及如何从数据库中检索并显示这些图像。将探讨如何使用ASP.NET控件,如DataGrid,来显示这些图像,并解决在显示过程中可能遇到的问题。
首先,需要在数据库中创建一个表来存储图像文件。这个表将包含两个字段:一个用于存储图像的二进制数据,另一个用于存储图像的文件扩展名。
以下是创建这样一个表的SQL语句示例:
CREATE TABLE [transact].[TestImageStore](
[img] [varbinary](max) NULL,
[Image_Type] [varchar](20) NULL,
[imgID] [int] IDENTITY(1,1) NOT NULL, CONSTRAINT [PK_TestImageStore] PRIMARY KEY CLUSTERED
(
[imgID] ASC
)
ON [PRIMARY]
)
在这个表中,[img]字段用于存储图像的二进制数据,[Image_Type]字段用于存储图像的文件扩展名,而[imgID]字段是一个自增的整数,用于唯一标识每条记录。
要在ASP.NET页面中显示存储在数据库中的图像,需要使用DataGrid控件。以下是实现这一功能的步骤:
以下是ASPX页面的示例代码:
<asp:DataGrid ID="dgBindImage" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateColumn HeaderText="Images">
<ItemTemplate >
<asp:Label ID="lblCode" Text='<%# Server.HtmlEncode(DataBinder.Eval(Container, "DataItem.imgID").ToString()) %>' runat="server" />
<img id="imgPic" width="120" height="100" runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
在代码后台,需要处理DataGrid的ItemDataBound事件,以动态设置图像控件的src属性。以下是处理该事件的示例代码:
protected void dgBindImage_ItemDataBound(object sender, DataGridItemEventArgs e)
{
try
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
byte[] photoByte = null;
string PhotoExtension = string.Empty;
Label lblCode = (Label)e.Item.Cells[0].FindControl("lblCode");
HtmlImage img = (HtmlImage)e.Item.Cells[0].FindControl("imgPic");
if (dsInsp != null && img != null && lblCode != null && !string.IsNullOrEmpty(lblCode.Text))
{
DataRow[] drowarr = dsInsp.Tables[0].Select("imgID=" + lblCode.Text);
DataRow dr = drowarr[0];
if (dr != null && dr["img"] != null && dr["Image_Type"] != null)
{
if (dr["img"] != DBNull.Value)
{
photoByte = (byte[])dr["img"];
}
PhotoExtension = dr["Image_Type"].ToString();
}
if (photoByte != null && photoByte.Length > 1)
{
string strFileName = UIUtilities.GetTempFolderName() + lblCode.Text.ToString() + PhotoExtension;
using (MemoryStream stream = new MemoryStream(photoByte))
{
System.Drawing.Image newImage = System.Drawing.Image.FromStream(stream);
newImage.Save(strFileName);
img.Attributes.Add("src", strFileName);
}
}
else
{
img.Attributes.Add("src", "");
}
}
}
}
catch (Exception ex)
{
// Handle exception
}
}
要将图像上传到数据库,需要使用asp:fileUpload控件来浏览图像文件。以下是实现这一功能的步骤:
以下是用户指南: