Як отрендеріть флеш (flash) з бази даних в ASP.NET



Припустимо, у нас є інформація для виведення на нашому сайті, причому у форматі flash. Завдання: написати Handler для виведення флеш-обьектов з бази даних, причому повинно працювати у всіх браузерах.


Рішення у вигляді FlashHandler.ashx:



  1. <%@ WebHandler Language=”C#” Class=”flash_view” %>   

  2.   

  3. using System;   

  4. using System.Web;   

  5. using System.Linq;   

  6.   

  7. /// <summary>   

  8. / / / Хендлер показу флеш-об’єкта

  9. /// </summary>   

  10. public class flash_view : IHttpHandler {   

  11.   

  12.     public void ProcessRequest(HttpContext context) {   

  13.         using (var dc = new SiteDataContext()) {   

  14.   

  15.             var item = dc.FlashObjects.First(i => i.FlashObjectId == Convert.ToInt32(context.Request.QueryString[“FlashObjectId”]));   

  16.   

  17.             if (item.Content.Length == 0)   

  18.                 return;   

  19.   

  20.             context.Response.ContentType = “application/x-shockwave-flash”;   

  21.                

  22.             context.Response.AddHeader(“Accept-Ranges”, “bytes”);   

  23.   

  24.             using (System.IO.MemoryStream ms = new System.IO.MemoryStream(item.Content.ToArray()))   

  25.             {   

  26.                context.Response.BinaryWrite(ms.ToArray());   

  27.             }   

  28.             context.Response.End();   

  29.         }   

  30.     }   

  31.   

  32.     public bool IsReusable {   

  33.         get {   

  34.             return true;   

  35.         }   

  36.     }   

  37.   

  38. }  
<%@ 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” – інакше він не розуміє що в контенті флеш-об’єкт 🙂


Вдалого вам програмування, наступна стаття буде про можливості контролю кліків по флеш об’єктам.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*