国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用ashx動態生成文件

2019-11-18 19:10:06
字體:
來源:轉載
供稿:網友

大概去年九月的時候,做一個功能就是生成圖片,當然有很多方法,生成圖片放在服務器的某個目錄下面,隔一段時間就刪除,圖還得自己畫,嫌麻煩,結果找著這樣一段代碼,今天看到使用.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 ();

        }
    }
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万盛区| 瑞安市| 襄垣县| 平安县| 九台市| 安仁县| 扶余县| 兴山县| 桂东县| 兰西县| 木里| 格尔木市| 长武县| 嘉禾县| 沙坪坝区| 福海县| 拜城县| 东丽区| 宕昌县| 邵阳县| 昌邑市| 同德县| 凤城市| 孟州市| 互助| 友谊县| 锦州市| 泾川县| 福建省| 东源县| 江孜县| 桐梓县| 大方县| 蒙阴县| 吉林市| 长沙县| 屏山县| 喀什市| 墨脱县| 田东县| 华阴市|