none
http图片请求 RRS feed

  • 问题

  • 现在问题是浏览器请求图片时,如果发现图片路径不存在,怎么自动转入我们自己的handler处理程序去数据库读取图片

    2012年4月24日 3:59

答案

  •  新建处理程序Handler.cs类,代码如下:

    using System; using System.Web; public class Handler : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.Expires = 0; context.Response.Clear(); context.Response.ContentType = "image/jpg"; if (!File.Exists(context.Request.PhysicalPath))//判断是否存在文件.. { context.Response.WriteFile(context.Request.PhysicalApplicationPath+"error.jpg"); //不存在输入error context.Response.End(); }

    else{

      context.Response.WriteFile(context.Request.PhysicalPath);

    context.Response.End();

    }


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

    在web.config里面输入

    <add verb="*" path="*.jpg" type="Handler"/> 

    这样就达到了你所要的效果了。当然

    File.Exists(context.Request.PhysicalPath)

    这句话可能存在问题...我这里就提供一个大概的思路,具体你扩展扩展哈。。。



    2012年4月27日 3:35
    版主

全部回复

  • 这要看你是如何请求图片的..能描述具体点么?

    如果是根据程序取到id=5的图片http://xxx//sss.aspx?id=5 这样的取图片方式的话..就是如果找不到id=5的图片response你默认的图片出来...

    2012年4月25日 1:36
    版主
  • 通过img的src请求图片,假设这个图片请求路径不存在;怎么返回默认图片呢;我想通过错误跳转去处理,但是发现图片请求貌似不跳过去

    2012年4月26日 8:15
  • 你好,

    这样的话需要src使用自己站点的地址,这个地址包含图片的路径。浏览器加载的时候实际上先去你的服务器查询,如果服务端图片没有获取,那么就返回自己服务器上的图片。

    服务端可以只获取图片的header,就不用load全部的图片了。

    2012年4月27日 3:24
    版主
  •  新建处理程序Handler.cs类,代码如下:

    using System; using System.Web; public class Handler : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.Expires = 0; context.Response.Clear(); context.Response.ContentType = "image/jpg"; if (!File.Exists(context.Request.PhysicalPath))//判断是否存在文件.. { context.Response.WriteFile(context.Request.PhysicalApplicationPath+"error.jpg"); //不存在输入error context.Response.End(); }

    else{

      context.Response.WriteFile(context.Request.PhysicalPath);

    context.Response.End();

    }


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

    在web.config里面输入

    <add verb="*" path="*.jpg" type="Handler"/> 

    这样就达到了你所要的效果了。当然

    File.Exists(context.Request.PhysicalPath)

    这句话可能存在问题...我这里就提供一个大概的思路,具体你扩展扩展哈。。。



    2012年4月27日 3:35
    版主

  • using System;
    using System.Web;

    public class Handler : IHttpHandler {
        
        public void ProcessRequest (HttpContext context) {
           
            context.Response.Expires = 0;
            context.Response.Clear();
            context.Response.ContentType = "image/jpg";

            if (!System.IO.File.Exists(context.Request.PhysicalPath))//判断是否存在文件..
            {
                context.Response.RedirectPermanent("跳转ashx"); //不存在输入error
                context.Response.End();
            }
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }

    }

    郭哲

    2012年5月7日 10:08

  • using System;
    using System.Web;

    public class Handler : IHttpHandler {
        
        public void ProcessRequest (HttpContext context) {
           
            context.Response.Expires = 0;
            context.Response.Clear();
            context.Response.ContentType = "image/jpg";

            if (!System.IO.File.Exists(context.Request.PhysicalPath))//判断是否存在文件..
            {
                context.Response.RedirectPermanent("跳转ashx"); //不存在输入error
                context.Response.End();
            }
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }

    }

    郭哲

    兄弟,代码一样就不用抄帖了。。。
    2012年5月8日 2:58
    版主