Допустим, у нас есть информация для вывода на нашем сайте, причём в формате flash. Задача: написать Handler для вывода флэш-обьектов из базы данных, причём должно работать во всех браузерах.
Решение в виде FlashHandler.ashx:
- <%@ WebHandler Language="C#" Class="flash_view" %>
-
- using System;
- using System.Web;
- using System.Linq;
-
- /// <summary>
- /// Хэндлер показа флэш-объекта
- /// </summary>
- public class flash_view : IHttpHandler {
-
- public void ProcessRequest(HttpContext context) {
- using (var dc = new SiteDataContext()) {
-
- var item = dc.FlashObjects.First(i => i.FlashObjectId == Convert.ToInt32(context.Request.QueryString["FlashObjectId"]));
-
- if (item.Content.Length == 0)
- return;
-
- context.Response.ContentType = "application/x-shockwave-flash";
-
- context.Response.AddHeader("Accept-Ranges", "bytes");
-
- using (System.IO.MemoryStream ms = new System.IO.MemoryStream(item.Content.ToArray()))
- {
- context.Response.BinaryWrite(ms.ToArray());
- }
- context.Response.End();
- }
- }
-
- public bool IsReusable {
- get {
- return true;
- }
- }
-
- }
<%@ WebHandler Language="C#" Class="flash_view" %>
using System;
using System.Web;
using System.Linq;
/// <summary>
/// Хэндлер показа флэш-объекта
/// </summary>
public class flash_view : IHttpHandler {
public void ProcessRequest(HttpContext context) {
using (var dc = new SiteDataContext()) {
var item = dc.FlashObjects.First(i => i.FlashObjectId == Convert.ToInt32(context.Request.QueryString["FlashObjectId"]));
if (item.Content.Length == 0)
return;
context.Response.ContentType = "application/x-shockwave-flash";
context.Response.AddHeader("Accept-Ranges", "bytes");
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(item.Content.ToArray()))
{
context.Response.BinaryWrite(ms.ToArray());
}
context.Response.End();
}
}
public bool IsReusable {
get {
return true;
}
}
}
Важно! Для того, чтобы данный хэндлер корректно отрабатывал в любимом браузере IE (6,7,8) необходимо в урл вписывать ".swf" - иначе он не понимает что в контенте флэш-объект :)
Удачного вам программирования, следующая статья будет о возможности контроля кликов по флэш объектам.
Ссылки по теме