Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
Hi all
 
I wrote the below code in handler for storing and fetching image from the database
 
Handler.ashx
 
<%@ WebHandler Language="C#" Class="ShowImage" %>
 
using System;
using System.Configuration;
using System.Web;
using System.IO;
using System.Data;
using System.Data.SqlClient;
 
public class ShowImage : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
       Int32 empno;
       if (context.Request.QueryString["id"] != null)
            empno = Convert.ToInt32(context.Request.QueryString["id"]);
       else
            throw new ArgumentException("No parameter specified");
 
       context.Response.ContentType = "image/jpeg";
       Stream strm = ShowEmpImage(empno);
       byte[] buffer = new byte[4096];
       int byteSeq = strm.Read(buffer, 0, 4096);
 
       while (byteSeq > 0)
       {
           context.Response.OutputStream.Write(buffer, 0, byteSeq);
           byteSeq = strm.Read(buffer, 0, 4096);
       }       
       //context.Response.BinaryWrite(buffer);
    }
 
    public Stream ShowEmpImage(int empno)
    {
 string conn = ConfigurationManager.ConnectionStrings  ["EmployeeConnString"].ConnectionString;
        SqlConnection connection = new SqlConnection(conn);
        string sql = "SELECT empimg FROM EmpDetails WHERE empid = @ID";
        SqlCommand cmd = new SqlCommand(sql,connection);
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.AddWithValue("@ID", empno);
        connection.Open();
        object img = cmd.ExecuteScalar();
        try
        {
            return new MemoryStream((byte[])img);
        }
        catch
        {
            return null;
        }
        finally
        {
            connection.Close();
        }
    }
 
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
 
 
}
 
storing the image is working properly but retrieving is not working..
 
Please tell me how to retrieve
 
Thank you
Posted 7-Feb-13 23:36pm
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 2

public void DisplayEmployee()
{
//try
//{
dtObj.Clear();
flowLayoutPanel1.Controls.Clear();
string s = CmbShiftdetails.Text;
string a = CmbDept.Text;
string sql_displayemp = string.Format("SELECT DepartmentMaster.DepartmentId, DepartmentMaster.DepartmentName, EmployeeMaster.EmployeeId, EmployeeMaster.EmployeeCode, EmployeeMaster.EmployeeName, EmployeeMaster.Address, EmployeeMaster.PhoneNo, EmployeeMaster.Emailid, EmployeeMaster.Designation, EmployeeMaster.Photo, ShiftMaster.ShiftId, ShiftMaster.ShiftName FROM DepartmentMaster INNER JOIN EmployeeMaster ON DepartmentMaster.DepartmentId = EmployeeMaster.DepartmentId INNER JOIN ShiftMaster ON EmployeeMaster.ShiftId = ShiftMaster.ShiftId where ShiftMaster.ShiftName= '{0}' and DepartmentMaster.DepartmentName='{1}'", CmbShiftdetails.Text, CmbDept.Text);

dtObj = obj.NonTransaction(sql_displayemp);
if (dtObj.Rows.Count > 0)
{
TableLayoutPanel tlpobj = new TableLayoutPanel();
tlpobj.Name = "Emp";
tlpobj.CellBorderStyle = TableLayoutPanelCellBorderStyle.OutsetDouble;
tlpobj.AutoSize = true;
 
string[] headers = { "EmployeeCode", "EmployeeName", "Address", "PhoneNo", "Emailid", "Designation", "Photo", "Edit", "Delete" };
for (int i = 0; i < headers.Length; i++)
{
Label lbl = new Label();
lbl.Text = headers[i];
tlpobj.Controls.Add(lbl, i, 0);
}
for (int i = 0; i < dtObj.Rows.Count; i++)
{
Button btnedit = new Button();
btnedit.Text = "Edit";
btnedit.Name = "e_" + dtObj.Rows[i]["EmployeeId"].ToString();
btnedit.Click += new EventHandler(btnedit_Click);
btnedit.Width = 60;
 
Button btndelete = new Button();
btndelete.Text = "Delete";
btndelete.Name = "d_" + dtObj.Rows[i]["EmployeeId"].ToString();
btndelete.Click += new EventHandler(btndelete_Click);
btndelete.Width = 60;
 
Label lblempid = new Label();
lblempid.Text = dtObj.Rows[i]["EmployeeId"].ToString();
lblempid.Name = "lblempid" + dtObj.Rows[i]["EmployeeId"].ToString();
lblempid.Visible = false;
 
Label lblempcode = new Label();
lblempcode.Text = dtObj.Rows[i]["EmployeeCode"].ToString();
lblempcode.Name = "lblempcode" + dtObj.Rows[i]["EmployeeId"].ToString();
 
Label lblempname = new Label();
lblempname.Text = dtObj.Rows[i]["EmployeeName"].ToString();
lblempname.Name = "lblempname" + dtObj.Rows[i]["EmployeeId"].ToString();
 
Label lbladdress = new Label();
lbladdress.Text = dtObj.Rows[i]["Address"].ToString();
lbladdress.Name = "lbladdress" + dtObj.Rows[i]["EmployeeId"].ToString();
 
Label lblphone = new Label();
lblphone.Text = dtObj.Rows[i]["PhoneNo"].ToString();
lblphone.Name = "lblphone" + dtObj.Rows[i]["EmployeeId"].ToString();
 
Label lblemail = new Label();
lblemail.Text = dtObj.Rows[i]["Emailid"].ToString();
lblemail.Name = "lblemail" + dtObj.Rows[i]["EmployeeId"].ToString();
 
Label lbldesignation = new Label();
lbldesignation.Text = dtObj.Rows[i]["Designation"].ToString();
lbldesignation.Name = "lbldesignation" + dtObj.Rows[i]["EmployeeId"].ToString();
 

PictureBox pbemp = new PictureBox();
pbemp.SizeMode = PictureBoxSizeMode.StretchImage;
try
{

pbemp.Image = Image.FromStream(new MemoryStream(((byte[])dtObj.Rows[i]["Photo"])));
}
catch { }
pbemp.Name = "pbemp" + dtObj.Rows[i]["EmployeeId"].ToString();
 

tlpobj.Controls.Add(lblempcode, 0, i + 1);
tlpobj.Controls.Add(lblempname, 1, i + 1);
tlpobj.Controls.Add(lbladdress, 2, i + 1);
tlpobj.Controls.Add(lblphone, 3, i + 1);
tlpobj.Controls.Add(lblemail, 4, i + 1);
tlpobj.Controls.Add(lbldesignation, 5, i + 1);
//tlpobj.Controls.Add(lblemail, 4, i + 1);
tlpobj.Controls.Add(pbemp, 6, i + 1);
//tlpobj.Controls.Add(lbltagid, 6, i + 1);
// tlpobj.Controls.Add(lblshiftid, 7, i + 1);
tlpobj.Controls.Add(btnedit, 7, i + 1);
tlpobj.Controls.Add(btndelete, 8, i + 1);
}
 
flowLayoutPanel1.Controls.Add(tlpobj);
flowLayoutPanel1.Refresh();
 
}
 

For retriving this code helps you
  Permalink  
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 3

cmd.ExecuteScalar() might be the problem.
Have you tried to fetch the image using cmd.ExecuteReader()?
  Permalink  
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 4

cmd.ExecuteScalar() might be the problem.
Have you tried to fetch the image using cmd.ExecuteReader()?
 
Are all images is jpeg format?
 
What is the exact error you get? "Not working" is not really informative Smile | :)
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 350
1 Jochen Arndt 190
2 Richard MacCutchan 135
3 Sergey Alexandrovich Kryukov 130
4 DamithSL 105
0 OriginalGriff 6,045
1 DamithSL 4,601
2 Maciej Los 4,087
3 Kornfeld Eliyahu Peter 3,480
4 Sergey Alexandrovich Kryukov 3,310


Advertise | Privacy | Mobile
Web01 | 2.8.141220.1 | Last Updated 8 Feb 2013
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100