2011-08-10 98 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。

相关问题