public void ProcessRequest(HttpContext context)
{
if (!string.IsNullOrEmpty(context.Request.QueryString["file"]))
{
var fileName = context.Request.QueryString["file"];
OnServing(fileName);
fileName = !fileName.StartsWith("/") ? string.Format("/{0}", fileName) : fileName;
try
{
var file = BlogService.GetFile(string.Format("{0}files{1}",Blog.CurrentInstance.StorageLocation, fileName));
if (file != null)
{
context.Response.AppendHeader("Content-Disposition", string.Format("inline; filename=\"{0}\"", file.Name));
SetContentType(context, file.Name);
if (Utils.SetConditionalGetHeaders(file.DateCreated.ToUniversalTime()))
return;
context.Response.BinaryWrite(file.FileContents);
OnServed(fileName);
}
else
{
OnBadRequest(fileName);
context.Response.Redirect(string.Format("{0}error404.aspx", Utils.AbsoluteWebRoot));
}
}
catch (Exception)
{
OnBadRequest(fileName);
context.Response.Redirect(string.Format("{0}error404.aspx", Utils.AbsoluteWebRoot));
}
}
}