IE漏洞?使用IHttpHandler从数据库中检索图像,获取随机空白图像

时间:2010-10-22 09:39:15

标签: c# asp.net internet-explorer ihttphandler

我正在使用ASP.net/C#并尝试构建图库。我的图像作为字节数据存储在数据库中,我使用像这样的axd文件,getDocument.axd?attachmentID = X,来设置一个Image对象,然后在页面加载时将其添加到aspx页面。

在IE中,大多数图像都被渲染到页面,但是某些图像没有渲染,我得到了默认的红色x图像。有趣的是,当我查看图像的属性时,它没有文件类型。我正在检索的文件都是jpg的。

我希望有人可以提供帮助,因为这是一个真正令人头疼的问题:)

我必须注意,firefox / chrome中没有出现此问题,并且所有图像都能正确呈现。

void IHttpHandler.ProcessRequest(HttpContext context)
    {

        if (context.Request.QueryString["attid"] != null)
        {
            int attid = int.Parse(context.Request.QueryString["attid"]);

            context.Response.Clear();
            context.Response.AddHeader("Content-Length", att.AttachmentData.Length.ToString());
            context.Response.ContentType = att.MimeType.MimeHeader;
            //context.Response.CacheControl = "no-cache";
            context.Response.AddHeader("Content-Disposition", "attachment; filename=" + att.FileName.Replace(" ", "_") + "." + att.MimeType.FileExtension + ";");
            context.Response.OutputStream.Write(att.AttachmentData, 0, att.AttachmentData.Length);
            context.Response.End();

            return;
        }
    }

为了调用这个方法,我从数据库中获取一个id列表,然后拉回相应的图像,执行以下操作;

            foreach (int i in lstImages)
            {
                Image tempImage = new Image();
                Panel pnl = new Panel();
                tempImage.ImageUrl = "getDocument.axd?attid=" + i;
                tempImage.Attributes.Add("onclick", "javascript:populateEditor(" + i + ");");
                tempImage.Height = 100;
                tempImage.Width = 100;
                pnl.Controls.Add(tempImage);
                divImages.Controls.Add(tempImage);
            }

*编辑* 我的一位同事注意到我的一些图像中包含了图像文件中的奇怪标题信息。我们怀疑这可能来自photoshop保存文件,因为所有尚未从特定人员创建的文件似乎都显示正常。

1 个答案:

答案 0 :(得分:0)

自己完成这项工作后,我从未遇到过这个问题。这是针对相同的图像发生的还是半随机的?

检查jpegs是否可以在IE中正常查看(即作为源文件而不是通过你的处理程序),用fiddler检查HTTP流量,并检查输出的字节流看起来不错。