【问题标题】:IE bug? Using a IHttpHandler to retrieve images from database, getting random blank imagesIE漏洞?使用 IHttpHandler 从数据库中检索图像,获取随机空白图像
【发布时间】:2010-10-22 09:39:15
【问题描述】:

我正在使用 ASP.net/C# 并尝试构建一个图片库。我的图像以字节数据的形式存储在数据库中,我使用 axd 文件 getDocument.axd?attachmentID= X 来设置图像对象,然后在页面加载时将其添加到 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 保存文件,因为并非由特定人员创建的所有文件似乎都显示正常。

【问题讨论】:

  • 我认为问题可能出在您的代码中,将其发布也会有所帮助。

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


【解决方案1】:

我自己做过这个,我从来没有遇到过这个问题。这是否发生在相同的图像上还是半随机的?

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

【讨论】:

  • 如果我只是对 进行硬编码,则无法查看导致问题的图像,但是您可以下载并打开它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 2019-04-27
  • 2021-07-11
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
相关资源
最近更新 更多