Reputation: 43
I am trying to retrieve an image from SQL Server 2008 Express and insert it into an <ASP:Image>
. I have tried using a MemoryStream
but I just can't seem to get it right.
My C# code at the minute looks like:
try
{
con.Open();
SqlCommand sqlGetStep1 = new SqlCommand("staff_getStep1", con);
{
sqlGetStep1.CommandType = CommandType.StoredProcedure;
sqlGetStep1.Parameters.Add(new SqlParameter("@taskID", Convert.ToInt16(taskID)));
SqlDataReader step1 = sqlGetStep1.ExecuteReader();
//Check if username exists
if (step1.Read())
{
step1Text = (string)step1["step1Text"];
step1Image = (byte)step1["step1Image"];
}//if
else
{
step1Text = "null";
step1Image = 0;
}//else
}//sqlDeleteNotification
}//try
catch (SqlException sqlEx)
{
lblSQLError.Visible = true;
lblSQLError.Text = sqlEx.Message.ToString();
}//catach sql
catch (Exception ex)
{
lblError.Visible = true;
lblError.Text = ex.ToString();
}//Catch exception
finally
{
con.Close();
}//Finally
My aspx code where I would like to display the image looks like:
<asp:Panel runat="server" ID="pnlStep1" Visible="false" CssClass="NormalText">
<asp:Label runat="server" ID="lblStep1Text" Text="Step 1 Instruction: "></asp:Label>
<asp:TextBox runat="server" ID="txtStep1Text" Text="" ReadOnly="true"></asp:TextBox>
<asp:Label runat="server" ID="lblStep1Image" Text="Step 1 Image: "></asp:Label>
<asp:Image runat="server" ID="imgStep1" ImageUrl="" Height="100px" Width="100px"/>
</asp:Panel>
Any help would be greatly appreciated :)
Upvotes: 0
Views: 754
Reputation: 532435
You need to have a separate url that takes the id of the image to be delivered (in this case the step id) and delivers the contents as the results with the correct MIME type. Use the url to this method as the url for the asp:Image
. Normally, you'd implement this (in WebForms) as a HttpHandler. See How to return an image as the response in ASP.NET
Upvotes: 2