.net 怎么调用ashx文件的方法,方法中包含一些参数。该ASHX返回一张图片。
展开全部
一般处理文件(ASHX)是可以通过前台调用的,你可以使用如: <img src="aaa.ashx?width=100&&Height=200" />这种方试直接调用这个返回图片的ASHX文件。
ASHX文件如下:
// 这个方法就是ASHX文件的入口点,建议在这里进行参数处理
public void ProcessRequest(HttpContext context)
{
//定议图片大小
int widthtmp = 50;
int Heighttmp = 50;
if (context.Request.QueryString["width"] != null && !string.IsNullOrEmpty(context.Request.QueryString["width"].ToString()))
{
widthtmp = Convert.ToInt32(context.Request.QueryString["width"]);
}
if (context.Request.QueryString["Height"] != null && !string.IsNullOrEmpty(context.Request.QueryString["Height"].ToString()))
{
Heighttmp = Convert.ToInt32(context.Request.QueryString["width"]);
}
//调用返图片方法并将返回的二进制写入HTTP输出流
context.Response.BinaryWrite(getimg(widthtmp, Heighttmp));
}
private byte[] getimg(int widthtmp,int Heighttmp)
{
//方法体记自定义
//getimg方法就是你说的返回一张图片的方法了,不过这个方法最后记得将图片转成二进制进行返回,
}
此外ASHX文件还可被JS调用和后台调用``通过JS加ASHX文件用来进行数剧访问就是人们所说的异步了。
如有兴趣可以直接找我``我可以传一些资料给你看
ASHX文件如下:
// 这个方法就是ASHX文件的入口点,建议在这里进行参数处理
public void ProcessRequest(HttpContext context)
{
//定议图片大小
int widthtmp = 50;
int Heighttmp = 50;
if (context.Request.QueryString["width"] != null && !string.IsNullOrEmpty(context.Request.QueryString["width"].ToString()))
{
widthtmp = Convert.ToInt32(context.Request.QueryString["width"]);
}
if (context.Request.QueryString["Height"] != null && !string.IsNullOrEmpty(context.Request.QueryString["Height"].ToString()))
{
Heighttmp = Convert.ToInt32(context.Request.QueryString["width"]);
}
//调用返图片方法并将返回的二进制写入HTTP输出流
context.Response.BinaryWrite(getimg(widthtmp, Heighttmp));
}
private byte[] getimg(int widthtmp,int Heighttmp)
{
//方法体记自定义
//getimg方法就是你说的返回一张图片的方法了,不过这个方法最后记得将图片转成二进制进行返回,
}
此外ASHX文件还可被JS调用和后台调用``通过JS加ASHX文件用来进行数剧访问就是人们所说的异步了。
如有兴趣可以直接找我``我可以传一些资料给你看
追问
ASHX里面有一个方法,方法带几个参数,怎么在后台向这个方法传参。你QQ多少啊?我加你?
eg.
public Image GetImage(DataTable dt, int width, int height, int rat, string ValueFieldName, string KeyFieldName)
{
...
}
我想在aspx页面后台里向这个方法传参数。
追答
aaa.ashx?后面不是参数么?
参数接收不都在这里么?
if (context.Request.QueryString["width"] != null && !string.IsNullOrEmpty(context.Request.QueryString["width"].ToString()))
{
widthtmp = Convert.ToInt32(context.Request.QueryString["width"]);
}
if (context.Request.QueryString["Height"] != null && !string.IsNullOrEmpty(context.Request.QueryString["Height"].ToString()))
{
Heighttmp = Convert.ToInt32(context.Request.QueryString["width"]);
}
你要多少就传多少啊```我写的传了两个
展开全部
<%@ WebHandler Language="C#" Class="ImageHandler" %>
using System;
using System.Web;
/// <summary>
/// 这就一个没有任何实现的一般处理程序。
/// </summary>
public class ImageHandler : IHttpHandler {
public void ProcessRequest (HttpContext context)
{
//获取虚拟目录的物理路径。
string path = context.Server.MapPath("");
//获取图片文件的二进制数据。
byte[] datas = System.IO.File.ReadAllBytes(path + "\\U1513.jpg");
//将二进制数据写入到输出流中。
context.Response.OutputStream.Write(datas, 0, datas.Length);
}
public bool IsReusable {
get {
return false;
}
}
}
default.aspx文件
注意上面的代码:<asp:Image ID="Image1" runat="server" ImageUrl="~/ImageHandler.ashx"/></div> 中ImageUrl指向的是ImageHandler.ashx文件。
using System;
using System.Web;
/// <summary>
/// 这就一个没有任何实现的一般处理程序。
/// </summary>
public class ImageHandler : IHttpHandler {
public void ProcessRequest (HttpContext context)
{
//获取虚拟目录的物理路径。
string path = context.Server.MapPath("");
//获取图片文件的二进制数据。
byte[] datas = System.IO.File.ReadAllBytes(path + "\\U1513.jpg");
//将二进制数据写入到输出流中。
context.Response.OutputStream.Write(datas, 0, datas.Length);
}
public bool IsReusable {
get {
return false;
}
}
}
default.aspx文件
注意上面的代码:<asp:Image ID="Image1" runat="server" ImageUrl="~/ImageHandler.ashx"/></div> 中ImageUrl指向的是ImageHandler.ashx文件。
追问
这个我知道哈。我的意思是,ASHX里面有一个方法,方法带几个参数,怎么在后台向这个方法传参。
eg.
public Image GetImage(DataTable dt, int width, int height, int rat, string ValueFieldName, string KeyFieldName)
{
...
}
追答
不是有HttpContext context这个吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-12-13
展开全部
关注
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询