C# ASP.NET的一个很简单的问题。。请高手帮忙。小弟无尽感激(34)//IHttpHandler 问题
如下是小弟不明白的地方。多谢高手们的帮助。。protectedvoidButton1_Click(objectsender,EventArgse){intid=Conve...
如下是小弟不明白的地方。多谢高手们的帮助。。
protected void Button1_Click(object sender, EventArgs e)
{
int id = Convert.ToInt32(TextBox1.Text);
String size = TextBox2.Text;
\\1 这里不明?
Image1.ImageUrl = "Handler.ashx?PhotoID=" + id + "&Size="+ size ;
}
public class Handler : IHttpHandler {
public bool IsReusable {
get {
return true;
}
}
//2 这里传入的参数是什么类型,具体有什么作用?
public void ProcessRequest (HttpContext context)
{
//3、这里不明?
context.Response.ContentType = "image/jpeg";
//4.这不明?不知道这是用来做什么的?
context.Response.Cache.SetCacheability(HttpCacheability.Public);
//5、这里也不明?也不知是用来做什么的?
context.Response.BufferOutput = false;
int size;
//6.Switch里的参数,详细解释清楚?
switch (context.Request.QueryString["Size"])
{
case "S":
size = 1;
break;
case "M":
size = 2;
break;
case "L":
size = 3;
break;
default:
size = 4;
break;
}
Int32 id = -1;
Stream stream = null;
if (context.Request.QueryString["PhotoID"] != null && context.Request.QueryString["PhotoID"] != "")
{
id = Convert.ToInt32(context.Request.QueryString["PhotoID"]);
//获取图片流
stream = GetPhoto(id, size);
}
else
{
id = Convert.ToInt32(context.Request.QueryString["AlbumID"]);
stream = GetFirstPhoto(id, size);
}
// Get the photo from the database, if nothing is returned, get the default "placeholder" photo
if (stream == null)
stream = GetPhoto(size);
// Write image stream to the response stream
const int buffersize = 1024 * 16;
byte[] buffer = new byte[buffersize];
int count = stream.Read(buffer, 0, buffersize);
while (count > 0)
{
context.Response.OutputStream.Write(buffer, 0, count);
count = stream.Read(buffer, 0, buffersize);
}
} 展开
protected void Button1_Click(object sender, EventArgs e)
{
int id = Convert.ToInt32(TextBox1.Text);
String size = TextBox2.Text;
\\1 这里不明?
Image1.ImageUrl = "Handler.ashx?PhotoID=" + id + "&Size="+ size ;
}
public class Handler : IHttpHandler {
public bool IsReusable {
get {
return true;
}
}
//2 这里传入的参数是什么类型,具体有什么作用?
public void ProcessRequest (HttpContext context)
{
//3、这里不明?
context.Response.ContentType = "image/jpeg";
//4.这不明?不知道这是用来做什么的?
context.Response.Cache.SetCacheability(HttpCacheability.Public);
//5、这里也不明?也不知是用来做什么的?
context.Response.BufferOutput = false;
int size;
//6.Switch里的参数,详细解释清楚?
switch (context.Request.QueryString["Size"])
{
case "S":
size = 1;
break;
case "M":
size = 2;
break;
case "L":
size = 3;
break;
default:
size = 4;
break;
}
Int32 id = -1;
Stream stream = null;
if (context.Request.QueryString["PhotoID"] != null && context.Request.QueryString["PhotoID"] != "")
{
id = Convert.ToInt32(context.Request.QueryString["PhotoID"]);
//获取图片流
stream = GetPhoto(id, size);
}
else
{
id = Convert.ToInt32(context.Request.QueryString["AlbumID"]);
stream = GetFirstPhoto(id, size);
}
// Get the photo from the database, if nothing is returned, get the default "placeholder" photo
if (stream == null)
stream = GetPhoto(size);
// Write image stream to the response stream
const int buffersize = 1024 * 16;
byte[] buffer = new byte[buffersize];
int count = stream.Read(buffer, 0, buffersize);
while (count > 0)
{
context.Response.OutputStream.Write(buffer, 0, count);
count = stream.Read(buffer, 0, buffersize);
}
} 展开
展开全部
1、Image1.ImageUrl = "Handler.ashx?PhotoID=" + id + "&Size="+ size ;
Image的控件的src属性会被赋予Handler.ashx?....的地址,Handler.ashx为“一般处理程序”,在此处应用应该是输出图片流数据。
2、public void ProcessRequest (HttpContext context)
参数的类型已经说明了他的作用,HttpContext上下文,提供了一些基本的类型引用,比较熟悉的是Request,Response,Server,Application等等。
3、context.Response.ContentType = "image/jpeg";
设置响应的类型,此处由于是输出图片,所以设置为“image/jpeg”;
4、context.Response.Cache.SetCacheability(HttpCacheability.Public);
用于设置Cache-Control,HttpCacheability是一个枚举类型,详细描述搜索“Cache-Control”、“HttpCacheability”。
5、context.Response.BufferOutput = false;
获取或设置一个值,该值指示是否缓冲输出并在处理完整个页之后发送它。
6、context.Request.QueryString["Size"]
对应 Image1.ImageUrl = "Handler.ashx?PhotoID=" + id + "&Size="+ size 中的Size参数。
Image的控件的src属性会被赋予Handler.ashx?....的地址,Handler.ashx为“一般处理程序”,在此处应用应该是输出图片流数据。
2、public void ProcessRequest (HttpContext context)
参数的类型已经说明了他的作用,HttpContext上下文,提供了一些基本的类型引用,比较熟悉的是Request,Response,Server,Application等等。
3、context.Response.ContentType = "image/jpeg";
设置响应的类型,此处由于是输出图片,所以设置为“image/jpeg”;
4、context.Response.Cache.SetCacheability(HttpCacheability.Public);
用于设置Cache-Control,HttpCacheability是一个枚举类型,详细描述搜索“Cache-Control”、“HttpCacheability”。
5、context.Response.BufferOutput = false;
获取或设置一个值,该值指示是否缓冲输出并在处理完整个页之后发送它。
6、context.Request.QueryString["Size"]
对应 Image1.ImageUrl = "Handler.ashx?PhotoID=" + id + "&Size="+ size 中的Size参数。
展开全部
1:就是根据 PhotoID=" + id + "&Size="+ size 这两个参数去另一个页面上处理,然后那个页面会返回一个字符串,这个字符串就是一个图片的路径。
2:HttpContext 这个类就代表了一个http请求,集合中包含了该请求的所有对象,比如 request.querystring["PhotoID"];
3:设置网页的输出类型为图片类型。
4:这个是设置缓存的,具体MSDN中很清楚。
5:该值指示是否缓冲输出并在处理完整个页之后发送它
6:就是根据你传递的参数去设置大小,"&Size="+ size,这个就是你的参数。
2:HttpContext 这个类就代表了一个http请求,集合中包含了该请求的所有对象,比如 request.querystring["PhotoID"];
3:设置网页的输出类型为图片类型。
4:这个是设置缓存的,具体MSDN中很清楚。
5:该值指示是否缓冲输出并在处理完整个页之后发送它
6:就是根据你传递的参数去设置大小,"&Size="+ size,这个就是你的参数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1,只是一个引用URL,如果我说是index.aspx,你能理解吧?但是如果是index.aspx?id=1呢?就是这个意思,全部路径可能是“~/index.aspx?id=1”
2,HttpContext,你试试加个“.”,里面的一些属性你可以了解一二,起码有几个你绝对知道,试试!
3,既然涉及Type,就是类型,你需要了解一下HTTP协议才行
4,貌似是做一下缓存,你看了会用就行,不用特别理解
5,我确实没用过这个
6,context.Request.QueryString["Size"],这是你的查询字符串,可以获取本页面的查询字符串,比如“index.aspx?id=1”
那么你在index.aspx.cs文件(即后台)中可以:
int id=Request.QueryString["id"];
那么结果是id=1
明白了?
2,HttpContext,你试试加个“.”,里面的一些属性你可以了解一二,起码有几个你绝对知道,试试!
3,既然涉及Type,就是类型,你需要了解一下HTTP协议才行
4,貌似是做一下缓存,你看了会用就行,不用特别理解
5,我确实没用过这个
6,context.Request.QueryString["Size"],这是你的查询字符串,可以获取本页面的查询字符串,比如“index.aspx?id=1”
那么你在index.aspx.cs文件(即后台)中可以:
int id=Request.QueryString["id"];
那么结果是id=1
明白了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
补充1楼
第5个是设置缓冲区的输入输出!!!
false是不使用!!!
第5个是设置缓冲区的输入输出!!!
false是不使用!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询