将资料库中的二进制流图片数据呈现出来
将图片存入数据库显示出来
首先先要将图片的二进制流数据从资料库中取出来一定要为 object 类型
要不然强制转换数据会导致类型转化异常 byte[] 类型。
byte[] MyData = new byte[0];
string ImageGUID = Request.QueryString["ImageGUID"];
AbstractEngine engine = NJPublicFunc.GetEngine();
string SQL = " select XAD010 from IMGXAD where GUID='" + ImageGUID + "'";
try
{
DataTable dt = engine.getDataSet(SQL, "temp").Tables[0];
if (dt != null&&dt.Rows.Count>0)
{
MyData = (byte[])dt.Rows[0][0];
Response.ContentType = "image/gif";
Response.BinaryWrite(MyData);
}
}
catch (Exception ex)
{
}
重点是下面的两句
Response.ContentType = "image/gif";
Response.BinaryWrite(MyData);
这个是将这个二进制流数据 转化为图片 显示在页面上。这里显示出来是整个页面。
前台可以绑定控件显示出来
///<summary>
///加載範例圖片
///</summary>
private StringBuilder LoadIMG()
{
StringBuilder sb = new StringBuilder();
sb.AppendLine(@"<table>");
string querySQL = " select XAD009,XAD010,GUID from IMGXAD WHERE XAD008='1' and XAD001='0'";
AbstractEngine engine = NJPublicFunc.GetEngine();
try
{
DataTable dt = engine.getDataSet(querySQL, "temp").Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i % 3 == 0)
{
sb.AppendLine("<tr>");
}
sb.AppendLine("<td style=\"width:100px\">");
sb.AppendLine("<span>" + LocaleString.getSystemMessageString(glb.LangIni, "message", "str3", "範例:") + dt.Rows[i]["XAD009"].ToString() + "</span><br/>");
sb.AppendLine("<input type='image' width='100px' height='100px' src='PicShow.aspx?ImageGUID=" + dt.Rows[i]["GUID"].ToString() + "'/>");
sb.AppendLine("</td>");
if (i % 3 == 2)
{
sb.AppendLine("</tr>");
}
}
if (dt.Rows.Count % 3 != 0)
{
sb.AppendLine("</tr>");
}
}
sb.AppendLine(@"</table>");
engine.close();
return sb;
}
catch (Exception ex)
{
engine.close();
throw ex;
}
}
后台租出DIV
在前台写出一个 DIV
<div id="divIMG" runat="server">
</div>
然后在Load的时候 写出div InnerHtml
divIMG.InnerHtml = LoadIMG().ToString();
这样就完美解决了