img src="Handler.ashx?PhotoID=&Size=S"

it2022-05-09  26

很奇怪的事情,只是发现了,但不明白为什么! Handler  1<%@ WebHandler Language="C#" Class="Handler" %> 2 3using System; 4using System.IO; 5using System.Web; 6 7public class Handler : IHttpHandler { 8 9    public bool IsReusable {10        get {11            return true;12        }13    }14    15    public void ProcessRequest (HttpContext context) {16        // Set up the response settings17        context.Response.ContentType = "image/jpeg";18        context.Response.Cache.SetCacheability(HttpCacheability.Public);19        context.Response.BufferOutput = false;20        // Setup the Size Parameter21        PhotoSize size;22        switch (context.Request.QueryString["Size"]) {23            case "S":24                size = PhotoSize.Small;25                break;26            case "M":27                size = PhotoSize.Medium;28                break;29            case "L":30                size = PhotoSize.Large;31                break;32            default:33                size = PhotoSize.Original;34                break;35        } 36        // Setup the PhotoID Parameter37        Int32 id = -1;38        Stream stream = null;39        if (context.Request.QueryString["PhotoID"!= null && context.Request.QueryString["PhotoID"!= ""{40            id = Convert.ToInt32(context.Request.QueryString["PhotoID"]);41            stream = PhotoManager.GetPhoto(id, size);42        } else {43            id = Convert.ToInt32(context.Request.QueryString["AlbumID"]);44            stream = PhotoManager.GetFirstPhoto(id, size);45        }46        // Get the photo from the database, if nothing is returned, get the default "placeholder" photo47        if (stream == null) stream = PhotoManager.GetPhoto(size);48        // Write image stream to the response stream49        const int buffersize = 1024 * 16;50        byte[] buffer = new byte[buffersize];51        int count = stream.Read(buffer, 0, buffersize);52        while (count > 0{53            context.Response.OutputStream.Write(buffer, 0, count);54            count = stream.Read(buffer, 0, buffersize);55        }56    }5758} 据说是能以流的方式直接读取存在数据库中的图片。

转载于:https://www.cnblogs.com/nanshouyong326/archive/2007/07/10/812714.html

相关资源:ASP,NET 网站开发项目化教程第11讲.ppt

最新回复(0)