Search code examples
c#asp.netfileinformixgeneric-handler

How to open files stored as bytes in database with http handler?


I have my files stored as bytes in my database.

How to open files like this with its application (like microsoft office, acrobat reader ,...etc) or download it.

I want to do this with generic handler :


 public class Attachement : IHttpHandler, System.Web.SessionState.IRequiresSessionState
    {
        public void ProcessRequest(HttpContext context)
        {
            try
            {
                byte[] Attachement = (byte[])AttachementDAL.ReadAttachement(int.Parse(context.Session["attch_serial"].ToString())).Rows[0]["attach_content"];

            }
            catch (Exception ee)
            {
            }

        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

Solution

  • You would write it to the response stream with the correct MIME type. You can find a list of MS file format MIME types here, for pdf it is application/pdf. If you want to keep it generic (all binary files) Use application/octet-stream

     public void ProcessRequest(HttpContext context)
     {
       try
       {
         byte[] Attachement = 
               (byte[])AttachementDAL
                      .ReadAttachement(
                          int.Parse(context.Session["attch_serial"].ToString())
                       ).Rows[0]["attach_content"];
    
         context.Response.Clear();
         context.Response.ContentType = "application/msword";
         foreach(byte b in Attachement)
         {
           context.Response.OutputStream.WriteByte(b);
         }
         context.Response.OutputStream.Flush();
       }
       catch (Exception ee)
       {
       }
    }