2012-01-04 13 views
7

मैं अपने aspx पेजप्रदर्शन छवि ashx का उपयोग कर हैंडलर

<td> 
<asp:Image ID="LargeImage" runat="server" Height="100" Width="100" />" 

</td> 

मेरी aspx.cs में, किसी कारण के लिए, छवि नहीं करता है के लिए इस छवि

protected void uploadimage_Click(object sender, System.EventArgs e) 
     { 

      ImageUtils.uploadImage(Titletxt.Text, FileUpload.FileContent); 
      LargeImage.ImageUrl = "~/AvatarImageFetch.ashx?memberid=" + memberid.ToString(); 
} 

करने के लिए एक imageUrl सौंपा में निम्नलिखित छवि है दिखाना नहीं यहां मेरा एएसएक्स

public void ProcessRequest(HttpContext context) 
     { 
      SqlConnection myConnection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["FMMImages"].ConnectionString); 

      myConnection.Open(); 
      string sql = "select largeimage from images_temp where [email protected]"; 
      SqlCommand cmd = new SqlCommand(sql, myConnection); 
      int param; 
      int.TryParse(context.Request.QueryString["memberid"], out param); 
      cmd.Parameters.Add("@memberid", SqlDbType.Int).Value = param; 
      //cmd.Parameters.Add("@GuID", SqlDbType.UniqueIdentifier).Value = context.Request.QueryString["UID"].ToString(); 

      cmd.CommandType = System.Data.CommandType.Text; 

      SqlDataReader dReader = cmd.ExecuteReader(); 
      dReader.Read(); 
      context.Response.BinaryWrite((byte[])dReader["largeimage"]); 
      dReader.Close(); 
      myConnection.Close(); 


     } 

इसके अलावा, मेरे पास एशक्स हैंडलर में ब्रेकपॉइंट है। ऐसा लगता है कि हैंडलर फायरिंग नहीं कर रहा है।

+0

कि है ashx फ़ाइल ही, या पीछे कोड (अर्थात .ashx.cs फ़ाइल) में? – Richard

उत्तर

6

अपने ProcessRequest विधि में निम्नलिखित का प्रयास करें:

context.Response.ContentType = "image"; 

using (System.IO.MemoryStream str = new System.IO.MemoryStream(objData.ToArray(), true)) 
{ 
     str.Write(objData.ToArray(), 0, objData.ToArray().Length); 
     Byte[] bytes = str.ToArray(); 
     context.Response.BinaryWrite(bytes); 
} 

जहां objData मूल्य आप डेटाबेस से पढ़ रहे है

+0

बाइनरी लिखने के लिए धन्यवाद! –

1

ImageUrl केवल tilde (~) को प्रतिस्थापित करता है नियंत्रण मार्कअप।

ऐसा करें:

string imageUrl = "~/AvatarImageFetch.ashx?memberid=" + memberid.ToString(); 
LargeImage.ImageUrl = Page.ResolveUrl(imageUrl); 
+0

ओह, और आपको संदर्भ की आवश्यकता होगी। Reesponse.ContentType = "image" भाग भी। – Richard

संबंधित मुद्दे