FileHandler to process binary field
public class FileHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
HttpResponse Response = HttpContext.Current.Response;
HttpRequest Request=HttpContext.Current.Request;
Response.Expires = 0;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
if (Request.QueryString["fid"] != null)
{
ProductItem pi= new ProductItemRepository().GetById(Request.QueryString["fid"]);
if (pi != null && pi.pi_image != null && pi.pi_file_name != null)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment;filename=" + pi.pi_file_name.Trim());
Response.ContentType = "application/octet-stream";
byte[] buffer = pi.pi_image.ToArray() as byte[];
if (Request.QueryString["t"] != null)
{
string t=Request.QueryString["t"];
int n;
Int32.TryParse(t, out n);
if (n == 1)
{
//Converts the byte array to memory stream, then resize the image, then convert back
using (MemoryStream ms = new MemoryStream(buffer))
{
using (Image image = Image.FromStream(ms))
{
using (MemoryStream stream = new MemoryStream())
{
Image img = image.GetThumbnailImage(40, 40, null, new IntPtr());
img.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
buffer = stream.ToArray();
}
}
}
}
}
Response.BinaryWrite(buffer);
}
}
Response.End();
}
public bool IsReusable
{
get
{
return false;
}
}
}
Advertisement