Mensaje dentro de Acceso y trabajo con datos

Responder 
#1 - 19/04/2011 16:04:24 Reporta abuso | Link Permanente
shenbao
Fecha de registro: 19/04/2011
0 post en este tema
1 post en acceso y trabajo con datos
1 post en todos los foros
IHttpHandler "application/x-shockwave-flash"

Responder Citar
Hola,

Soy un poco nuevo en ASP.Net, estoy creando un ImageHandler, pero tengo problemas para procesar un archivo flash para insertarlo en una pagina de contenido, el archivo lo tengo guardado en una carpeta del proyecto, con las imagenes con las extensiones .gif, .jpg, .png no tengo problema, el problema lo tengo en el caso .swf, intente algo como esto

        case ".swf":
                context.Response.ContentType = "application/x-shockwave-flash";
                context.Response.BinaryWrite(b);
                context.Response.End();

Pero sin ningun exito, agradeceria mucho si alguien pudiese ayudarme u orientarme acerca de la manera en que deberia de hacerlo. Gracias

using System;
using System.Net;
using System.Web;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
using System.Web.Configuration;

/// <summary>
/// Descripción breve de ImageHandler
/// </summary>
public class ImageHandler:IHttpHandler
{
    // Se mantiene el cache por un dia
    private static readonly System.TimeSpan expireCache =
        new System.TimeSpan(1,0,0,0);

    private const string IMAGE_UNAVAILABLE = "unavailable.png";


    private string imagesBasePath;

    public ImageHandler()
    {
        imagesBasePath = WebConfigurationManager.AppSettings["ImagesBasePath"];
    }

    #region Miembros de IHttpHandler

    public bool IsReusable
    {
        get { return true; }
    }

    public void ProcessRequest(HttpContext context)
    {
        string imageFile = String.Empty;
        string filePath = context.Request.FilePath;
        bool isContent = false;

        string fileName = filePath.Substring(filePath.LastIndexOf("/") + 1);
        if (filePath.Contains("/imagenes/"))
        {
            imageFile = imagesBasePath + fileName;
        }
        else
        {
            imageFile = context.Request.PhysicalPath;
            isContent = true;
        }

        if (!File.Exists(imageFile) || !Path.HasExtension(imageFile))
        {
            imageFile = imagesBasePath + IMAGE_UNAVAILABLE;
        }

        Bitmap bmap = new Bitmap(imageFile);
        context.Response.Clear();
        if (isContent)
        {
           
        }

        context.Response.Cache.SetExpires(DateTime.Now.Add(expireCache));
        context.Response.Cache.SetCacheability(HttpCacheability.Public);
        context.Response.Cache.SetValidUntilExpires(true);

        context.Response.AddHeader("content-disposition", "inline; filename=" + fileName);

        WebClient wc = new WebClient();
        byte[] b = new byte[10000];//wc.DownloadData("/imagenes/diagrama.swf");

        switch (Path.GetExtension(imageFile).ToLower())
        {
            case ".gif":
                context.Response.ContentType = "image/gif";
                bmap.Save(context.Response.OutputStream, ImageFormat.Gif);
                break;
            case ".png":
                context.Response.ContentType = "image/png";
                using (MemoryStream stream = new MemoryStream())
                {
                    bmap.Save(stream, ImageFormat.Png);
                    stream.WriteTo(context.Response.OutputStream);
                }
                break;
            case ".jpg":
                context.Response.ContentType = "image/jpeg";
                bmap.Save(context.Response.OutputStream, ImageFormat.Jpeg);
                break;
            case ".swf":
                context.Response.ContentType = "application/x-shockwave-flash";
                context.Response.BinaryWrite(b);
                context.Response.End();
                break;
            default:
                break;
        }
        bmap.Dispose();
    }

    #endregion
}

Volver arriba