asp.net - Can't retrieve image from SQL Server using Generic Handler c# -


whenever retrieve image using generic handler, retrieve either empty image or broken image.

here code.

aspx file:

using system; using system.collections.generic; using system.linq; using system.web; using system.web.ui; using system.web.ui.webcontrols;  //imports using dheltassys.modules; using system.data; using dheltassys.audittrail;  namespace dheltassys {     public partial class evaluateoffense : system.web.ui.page     {         disciplinemodulebl discipline = new disciplinemodulebl();         dheltassysaudittrail audit = new dheltassysaudittrail();          protected void page_load(object sender, eventargs e)         {             string position = session["position"].tostring();             if (session["employeeid"] == null)             {                 response.redirect("login.aspx");             } else if(position != "hr manager")             {                 response.redirect("accessdenied.aspx");             }              discipline.offense_emp_id = int.parse(session["offenseid"].tostring());              datatable dt = discipline.getproof();              if (dt.rows == null)             {                  label9.visible = false;                 image1.visible = false;             }         }            protected void btnevaluate_click(object sender, eventargs e)         {             discipline.offense_emp_id = int.parse(session["offenseid"].tostring());             discipline.decision = drpdecision.text;              discipline.addoffensedecision();              audit.emp_id = int.parse(session["employeeid"].tostring());             audit.addaudittrail(drpdecision.text + "ed employee's offense.");          }     } } 

here handler:

using system; using system.collections.generic; using system.linq; using system.web; using system.web.ui; using system.web.ui.webcontrols; using system.io;  //imports using system.data; using dheltassys.modules; using dheltassys.dataaccess;  namespace dheltassys {      public class showimage : ihttphandler, system.web.sessionstate.irequiressessionstate     {         disciplinemodulebl discipline = new disciplinemodulebl();         public void processrequest(httpcontext context)         {             if (context.session["offenseid"].tostring() == null) return;             int offense_emp_id = int.parse(context.session["offenseid"].tostring());             discipline.offense_emp_id = offense_emp_id;              datatable dt = discipline.getproof();              if (dt.rows == null) return;              int id = 1;              string image = dt.rows[0][1].tostring() + id;              string filename = dt.rows[0][0].tostring();             string filecontenttype = dt.rows[0][2].tostring();              byte[] bytes = (byte[])dt.rows[0][1];              string imagebase64 = convert.tobase64string(bytes);              context.response.contenttype = "image/" + filecontenttype;              if (context.request.querystring["id"] == "1")             {                 memorystream ms = new memorystream();                  ms.write(bytes, 0, bytes.length);                 context.response.buffer = true;                 system.drawing.image imagen = system.drawing.image.fromstream(ms);                 context.response.binarywrite(bytes);                 ms.dispose();              }             else             {                 return;             }               }          public bool isreusable         {                         {                 return true;             }         }     } } 

and adding that, here image object.

<asp:image id="image1" runat="server" imageurl="~/showimage.ashx" /> 

i tweaked code in many ways.

the image file stored in sql server using data type "image"

as can see, i'm using session retrieve specified image database. have no problem in accessing session whatsoever.

thanks in advance.

your code seems bit more complicated necessary; can write binary data outputstream without needing load memory stream, , you're doing nothing system.drawing.image object. try this:

context.response.outputstream.write(bytes, 0, bytes.length);


Comments

Popular posts from this blog

Android layout hidden on keyboard show -

google app engine - 403 Forbidden POST - Flask WTForms -

c - Why would PK11_GenerateRandom() return an error -8023? -