3

Sql Server データベースに保存されている画像があり、それらを Web ページに表示したいと考えています。

問題は、ASP.NET の Image コントロールにプロパティ ImageUrl があることです。このプロパティは、画像ファイルを含むフォルダーへのパスの値を取ります。しかし、私はデータベース テーブルからイメージを描画しており、パスを提供できるようにイメージをディスクに保存したくありません。むしろ、画像をページに直接ストリーミングしたいと思います。

私はこれを想像することさえ困難です (しゃれが意図されています)。これを行う唯一の方法は、画像を一時的に場所に保存してから画像コントロールにパスすることだと思います。しかし、多分私は何かを逃していますか?

追加するために編集:

これは、旅費の領収書の提示が必要な会計システム用です。ユーザー (30,000 人) が領収書をスキャンし、払い戻し要求に関連付けて保存できるようにすることを考えています。これをファイル システムに格納することは、ファイル システムへのインデックスを Sql Server テーブルに格納する方法の 1 つだと思います。しかし、これを Sql Server で実行できるかどうかを確認するように依頼されました。問題なく実行できますが、表示/レポートの側面が重要です。これらの償還要求に対してレポートを生成する必要がありますが、Crystal Reports がファイル システムにどの程度準拠しているかはわかりません。つまり、Sql Server でこれを行う方がはるかに簡単です。

4

2 に答える 2

-1
   <img runat="server" 
             src='<%# "getImage.aspx?ID=" + DataBinder.Eval(Container.DataItem, 
             "ImageIdentity")  %>' ID="Img1"/>

次にgetimage.aspxで

  sqlConnection.Open();     
  SqlCommand sqlCommand = new SqlCommand("Select Images"  ,sqlConnection);
  Reader= sqlCommand.ExecuteReader(CommandBehavior.CloseConnection); 
  byte [] byteArray
  if(Reader.Read())
  {
     byteArray= (byte[]) Reader["Images"];
  }

  System.IO.MemoryStream mstream = new System.IO.MemoryStream(byteArray,0,byteArray.Length);
  System.Drawing.Image dbImage = System.Drawing.Image.FromStream( new System.IO.MemoryStream(byteArray));
  System.Drawing.Image thumbnailImage = dbImage.GetThumbnailImage(100,100,null,new System.IntPtr());
   thumbnailImage.Save(mstream,dbImage.RawFormat);
   Byte[] thumbnailByteArray = new Byte[mstream.Length];
   mstream.Position = 0;
   mstream.Read(thumbnailByteArray, 0, Convert.ToInt32(mstream.Length));
   Response.Clear();
   Response.ContentType="image/jpeg";
   Response.BinaryWrite(thumbnailByteArray);
于 2013-04-30T19:13:52.017 に答える