4

これが私のクラス(product.cs)で、画像を挿入する方法は次のとおりです。

public static void InsertProductIMG(byte[] image, string contentType) 
{
   string cs = "Data Source=(local);Initial Catalog=myApp;Integrated Security=True";
   string comandoSql = "INSERT INTO [myApp].[dbo].[product] (image, ContentType) VALUES (@image, @contentType)";

   using (SqlConnection conn = new SqlConnection(cs))
   {
       conn.Open();

       using (SqlTransaction trans = conn.BeginTransaction())
       {
           SqlCommand cmd = new SqlCommand(comandoSql, conn, trans);
           SqlParameter[] parms = new SqlParameter[2];
           parms[0] = new SqlParameter("@image", image);
           parms[1] = new SqlParameter("@contentType", contentType);
           foreach (SqlParameter p in parms)
           {
              cmd.Parameters.Add(p);
           }

           cmd.ExecuteNonQuery();
           trans.Commit();
       }
    }
}

上記のメソッドを呼び出す apsx ページのコード ビハインドは次のとおりです。

byte[] imageBytes = new byte[fupld.PostedFile.InputStream.Length];
product.InsertProductIMG(imageBytes, "image/jpeg");//product is the class where the method is

今、私はこの画像を表示する方法を知りたいですか?

SQL(SELECT)からbyte []を読み取り、文字列に変換してからbyte []に​​変換する必要がありますか?その後、ビットマップ (System.Drawing) に変換します。しかし、このビットマップを aspx ページに表示するにはどうすればよいでしょうか?

やり方がわかりません。助けてください!!:]

ありがとう

Obs.: SQL Server では、列imageの型はvarbinary(MAX)です。

4

2 に答える 2

5

画像を返す Web ページを作成します。データベースからバイトを選択します (挿入するコードが既に記述されているため、選択方法を知っていると思います)。バイトを取得したら、MIME タイプを設定し、バイトを応答ストリームに書き込む必要があります。

var bytesFromDatabase = getImageFromDatabase();
context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(bytesFromDatabase);

編集:

前述の aspx Web ページへのコース tet を含む img タグを使用するだけです。例えば:

<img src="http://www.example.com/image.aspx?id=1" alt="image" />
于 2012-07-01T17:45:04.027 に答える
4

これを行うには、ハンドラーを使用する必要があります

これを読んでください、非常に良い例です

http://www.dotnetcurry.com/ShowArticle.aspx?ID=129

于 2012-07-01T17:49:30.367 に答える