0

我正在使用 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 保存文件,因为并非由特定人员创建的所有文件似乎都显示正常。

4

1 回答 1

0

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

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

于 2010-10-22T09:44:16.403 回答