Trước hết chúng ta cần khai báo trong web.config với chuỗi dữ liệu sau : <httpHandlers> <add verb="*" path="ShowImage.axd" type="ImageHandler.ImageSever" /> </httpHandlers> Sau đó chúng ta sẽ viết một file ImageServer.cs trong app_code:
namespace ImageHandler { public class ImageSever : IHttpHandler { public ImageSever() { // // TODO: Add constructor logic here // } public void ProcessRequest(System.Web.HttpContext context) {
try { string strX = context.Request.Params["l"].ToString(); string strY = context.Request.Params["t"].ToString(); string strZ = context.Request.Params["z"].ToString(); string strPath = context.Server.MapPath(ConfigurationManager.AppSettings["MapImage"].ToString()+"lvl"+strZ+"/"+strX+"_"+strY+"_"+strZ+".png"); if(File.Exists(strPath)) { writeImage(strPath, context); } else { //writeImage(strPath, context); writeImage(context.Server.MapPath(ConfigurationManager.AppSe ttings["MapImage"].ToString()+"noimage.gif"), context); } } catch (Exception objEx) { context.Response.Write(objEx.Message); } } public bool IsReusable { get { return true; } } /// <summary> /// /// </summary> /// <param name="Path"> gia tri can dua vao</param> /// <param name="context"> Context nội dung</param> public void writeImage(string strPath, System.Web.HttpContext context) { string strContentType = "image/PNG"; context.Response.ContentType = strContentType; context.Response.WriteFile(strPath); } } }
Với phần trên bạn cần suy nghĩ trước hết là namespace . Sau đó đến phần khai báo public class --> ImageSever : IHttpHandler ở phần này chúng ta có thêm 2 class cần thiết phải khai báo nhằm hổ trợ cho giá trị trả về của class này public bool IsReusable public void ProcessRequest(System.Web.HttpContext context) và sau đó là cách trả về giá trị hình ảnh mà bạn cần. Chúc vui vẻ và may mắn
Theo aspvn |