2011-08-10 135 views
1

我有發送圖像到客戶端(回傳時)的HTTP處理程序:jQuery的Ajax調用HTTP處理程序(ashx的)

public class ImageHandler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     Byte[] pic = GetPhoto(Convert.ToInt32(context.Request.QueryString["userID"])); 

     if (pic != null) 
     { 
      context.Response.ContentType = "image/jpeg"; 
      context.Response.OutputStream.Write(pic, 0, pic.Length); 
     } 
     else 
     { 
      context.Response.ContentType = "image/png"; 
      context.Response.WriteFile("/AllImages/DefaultPicture_large.png"); 
     } 
    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 

我如何可以使用此處理將圖像發送到客戶端與jQuery ajax請求?

幾個問題: 1)如何將圖像轉換爲JSON? 2)如果無法將圖像轉換爲JSON,我可以使用哪種格式將圖像發送到客戶端?

Tnx很多!

回答

3

你只是想在頁面上顯示它嗎?爲什麼不寫一個指向你的處理程序的src的img標籤?

喜歡的東西:

var img_url = '/myImageHandler.ashx?userDI=' + some_user_id; 
$("#displayArea").append($("<img src='" + img_url + "' alt='user image' />")); 
+0

當然你是對的! TNX! – Sash

3

1)發送圖像作爲JSON,你需要將其轉換爲Base64編碼的字符串:

string imageString = Convert.ToBase64String(pic); 
return imageString; 

2)然而,並非所有瀏覽器(IE < 8)支持您需要用來顯示這些base64編碼圖像的data-uri方案。

最好的方法是編寫一個img標記,src指向httpHandler。

相關問題