2

Windows フォームで mysql ブロブ イメージを表示する方法を知っていました。

try
            {
                MySqlConnection connection = new MySqlConnection(hp.myConnStr);
                MySqlCommand command = connection.CreateCommand();
                MySqlDataReader Reader;
                command.CommandText = "select logo from mcs_institude where id = 1";
                connection.Open();
                Reader = command.ExecuteReader();
                while (Reader.Read())
                {
                    pictureBox1.Image = new Bitmap(new MemoryStream((byte[])Reader.GetValue(0)));
                }
                connection.Close();
            }
            catch(Exception ex)
            {
                MessageBox.Show("Error in Get_ImageFormDB"+ ex.Message, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

しかし今、私はasp.netプロジェクトをやっています。この画像には、image プロパティがありません。

command = connection.CreateCommand();
            command.CommandText = "Select FO_Roomdet_Image from fo_roomtype where FO_Roomdet_Id=1";
            connection.Open();
            Reader = command.ExecuteReader();
            while (Reader.Read())
            {
                Image1.ImageUrl  = new MemoryStream((byte[])Reader.GetValue(0));                                    
            }
            connection.Close();

asp.netでこれを試すと、エラーが発生します。

エラー 1 型 'System.IO.MemoryStream' を 'string' に暗黙的に変換できません

この問題を解決するにはどうすればよいですか。asp.netイメージコントロールに表示されるmysqlブロブイメージを取得します。

お願い助けて。

4

2 に答える 2

2

あなたがやろうとしていることは意味がありません:あなたの画像を表示しようとしているブラウザはそれをどこからダウンロードするかを知る必要があります。

GetImage.aspxなど、画像生成専用の特別なaspxページを設定する必要があります。

メインページには、この画像生成ページを指すimghtmlタグがあります。

<img src="/GetImage.aspx?id=your_image_id"/>

次に、GetImage.aspx内で、ID(URLパラメーターから取得)に従ってDBから画像を取得します。コードは次のようになります。

command = connection.CreateCommand();
        command.CommandText = "Select FO_Roomdet_Image from fo_roomtype where FO_Roomdet_Id=1"; // or dynamically fetch id with Request.QueryString and properly escape it
        connection.Open();
        Reader = command.ExecuteReader();
        while (Reader.Read())
        {

            Response.ContentType = "image/jpeg"; // if your image is a jpeg of course
            Response.BinaryWrite((byte[])Reader.GetValue(0));                                 
        }
        connection.Close();
于 2012-10-04T10:06:54.630 に答える
0

まあ、これは明らかに最も単純な答えではありません。イメージの生成と再生成を使用するたびに、追加の aspx ファイルを作成する必要はありません。

バイト配列を使用して、実際に画像ファイルを html マークアップ言語に埋め込むことができます。

データベースから BLOB バイト配列を取得し、これを使用するだけです。

<img src="data:image/png;base64,<%= System.Convert.ToBase64String((byte[])dr["img"])%>" />

...ここで、dr は DataSet オブジェクトから取得した DataRow です。

Internet Explorer 8 と最新のすべてのブラウザーでテストしましたが、動作します。

于 2016-09-03T18:12:15.020 に答える