用ashx动态生成文件
来源:互联网 发布:物资管理系统源码 编辑:程序博客网 时间:2024/05/22 14:46
大概去年九月的时候,做一个功能就是生成图片,当然有很多方法,生成图片放在服务器的某个目录下面,隔一段时间就删除,图还得自己画,嫌麻烦,结果找着这样一段代码,今天看到使用.ashx文件处理IHttpHandler实现发送文本及二进制数据的方法。突然发现这种用法讨论的很好,也许是没怎么详细介绍它的官方中文文档吧,并且推荐另外一种方法代替。
// --------------------------------------------------- // Pick your favorite image format // ----------------------------------------------------- byte[] byteArr = (byte[]) oChartSpace.GetPicture ("png", 500, 500); // ----------------------------------------------------- // Store the chart image in Session to be picked up by an HttpHandler later // ----------------------------------------------------- HttpContext ctx = HttpContext.Current; string chartID = Guid.NewGuid ().ToString (); ctx.Session [chartID] = byteArr; imgHondaLineup.ImageUrl = string.Concat ("chart.ashx?", chartID);
chart.ashx里面就下面一句话
<% @ WebHandler language="C#" class="AspNetResources.Owc.ChartHandler" codebehind="chart.ashx.cs" %>
其实也可以用这个代替
在web.config里面的<system.web>里面加上
<httpHandlers> <add verb="*" path="*.ashx" type="AspNetResources.Owc, ChartHandler " validate="false" /> /*ChartHandler 是那个ashx.cs编译后生成的代码Assembly*/ <!--Since we are grabbing all requests after this, make sure Error.aspx does not rely on .Text --> <add verb="*" path="Error.aspx" type="System.Web.UI.PageHandlerFactory" /> </httpHandlers>
具体使用哪个都无所谓,后一种配置好了就方便一些,不用管路径了,其实这个思想的应用比较知名的在.text里面就已经有了,只不过应用的方向不同。
ashx.cs文件的代码
using System; using System.Web.SessionState; using System.IO; using System.Web;
namespace AspNetResources.Owc { public class ChartHandler : IHttpHandler, IReadOnlySessionState { public bool IsReusable { get { return true; } } public void ProcessRequest (HttpContext ctx) { string chartID = ctx.Request.QueryString[0]; Array arr = (Array) ctx.Session [chartID];
ctx.ClearError (); ctx.Response.Expires = 0; ctx.Response.Buffer = true; ctx.Response.Clear ();
MemoryStream memStream = new MemoryStream ((byte[])arr); memStream.WriteTo (ctx.Response.OutputStream); memStream.Close ();
ctx.Response.ContentType = "image/png"; ctx.Response.StatusCode = 200; ctx.Response.End ();
} } }
- 用ashx动态生成文件
- 用ashx动态生成文件
- 用ashx动态生成文件
- 用ashx动态生成文件
- 用ashx动态生成文件(转载)
- easyui datagrid+ashx实现动态生成列
- Easyui datagrid+ashx 实现动态生成列
- 使用ashx文件生成验证码图片
- 关于ashx文件的.cs自动生成
- 使用ashx文件生成验证码图片
- highCharts+ajax+json+ashx混合图形动态生成
- ashx文件
- *.ashx文件
- *.ashx文件
- ashx文件
- ashx文件
- ashx文件
- .ashx 文件
- 查看Linux系统一些方法
- RPC 编程(三)
- RPC编程(四)
- 文本文件以指定的字符串分割
- .ascx和.ashx文件说明
- 用ashx动态生成文件
- ASP.net的HTTP处理程序(ASHX)提取dll内嵌资源图片
- 互斥量的建立
- C++0X(一)
- SetThreadAffinityMask设置使用多核CPU的哪个核心
- 结合ashx来在DataGrid中显示从数据库中读出的图片
- 奇特的物以类聚现象
- 世界知名工会小D情况
- 提高网页打开速度的一些小技巧