ASP.net/C# を使用して、画像ギャラリーを構築しようとしています。私の画像はデータベースにバイトデータとして保存され、getDocument.axd?attachmentID= X のような axd ファイルを使用して、ページの読み込み時に aspx ページに追加される Image オブジェクトを設定します。
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 の保存ファイルによる可能性があると思われます。