none
バイナリ画像のIMAGEコントロールへの表示 RRS feed

  • 質問

  • 簡単かもしれませんがまた教えて下さい。

    ドロップダウンリスト(Ddp)で選択(ファイル名)された画像ファイルをimageコントロールに表示したいのですがどのように書けばよいか分かりません。

    テーブル:Aの項目
     id  ファイル名     type   pic
      1    1.jpg image/pjpeg バイナリ
      2    2.jpg image/pjpeg バイナリ

    以下コード ↓
        Sub Btn_Click(ByVal sender As Object, ByVal e As EventArgs)

            Dim Rs As SqlDataReader
            Dim cn As New SqlConnection("xxxx")
            Dim cmd As New SqlCommand()
           
            Dim id As SqlParameter = cmd.Parameters.Add("@id", SqlDbType.Char)
            id.Value = Ddp.SelectedItem.Value
           
            cmd.CommandText = "SELECT type,pic FROM A WHERE id=@id"
            cmd.Connection = cn
           
            cn.Open()
            Dim Rs = cmd.ExecuteReader()
            If Rs.Read() Then
                     ← ???
            End If
            cn.Close()
            Image1.ImageUrl =     ← ???     
        End Sub

    よろしくお願いします。

    2007年3月10日 14:23

すべての返信

  • まずはっきりさせておかねばならないのが「ブラウザはどのように画像を表示しているのか」です。
    ブラウザが受け取った HTML ファイル中に <img src="...." /> というタグがあった場合、ブラウザはその度に画像を取得するように Web サーバにリクエストします。
    一回のレスポンスで HTML ファイルと画像ファイルを返せません。

    という事は、Btn_Click メソッドで行う事は画像を作成して Web サーバに保存し、その Url を image1.ImageUrl に設定する。或いは、image1.ImageUrl に設定した Url のリクエストがされた場合に、動的に画像を作成してそのレスポンスを返す等です。後者の場合は、新しい aspx 等を作って、その中で DB にアクセスして画像を返してください。

    2007年3月10日 17:46
  • 囚人さんレスありがとうございます。

    >HTML ファイル中に <img src="...." /> というタグ

    vwdの中にimageは標準とHTMLの2箇所に存在していますがどのような違いがあるのでしょうか?webコントロールとHTMLコントロールという違いしか分かっていません。又、今回のようなことをする為にはどちらが適しているのでしょうか?今は標準を使用しています。

    >という事は、Btn_Click メソッドで行う事は画像を作成して Web サーバに保存し、その Url を image1.ImageUrl に設定する。

    ここで言われている画像を作成とはテーブル内に保存されている画像バイナリをXX.jpgに変換するということでいいですか?その後XX.jpgをWebサーバのフォルダに保存をしてUrl を image1.ImageUrl に設定する。という理解であってますか?

    >或いは、image1.ImageUrl に設定した Url のリクエストがされた場合に、動的に画像を作成してそのレスポンスを返す等です。後者の場合は、新しい aspx 等を作って、その中で DB にアクセスして画像を返してください。

    a.aspx(メイン) とb.aspx(サブ)があった場合

    1.メインでimage1.ImageUrl=b.aspx?id= ドロップダウンリストで選択された値

    2.サブで1.からの値を参照しDBにアクセス

    3.2.の結果をa.aspx返す

    ということだと思うのですが2.のDBアクセス以降の処理をどのように記述したらいいのか分かりません。

    最終的には同一ページ内にグリッドビューとフォームビューを配置しグリッドビューで選択されたレコードに対応する画像をフォームビュー表示したいと思っています。

    ご助言宜しくお願いします。

    2007年3月11日 0:14

  • vwdの中にimageは標準とHTMLの2箇所に存在していますがどのような違いがあるのでしょうか?webコントロールとHTMLコントロールという違いしか分かっていません。又、今回のようなことをする為にはどちらが適しているのでしょうか?今は標準を使用しています。

    いえ、コントロールの話ではなく、ブラウザが最終的に受け取る HTML の話です。

     


    ここで言われている画像を作成とはテーブル内に保存されている画像バイナリをXX.jpgに変換するということでいいですか?その後XX.jpgをWebサーバのフォルダに保存をしてUrl を image1.ImageUrl に設定する。という理解であってますか?

    その通りです。ただその方法を採ると生成した画像を削除するべきかどうかという問題もあります。仕様で片付くならそれもありでしょう。

     


    a.aspx(メイン) とb.aspx(サブ)があった場合

    1.メインでimage1.ImageUrl=b.aspx?id= ドロップダウンリストで選択された値

    2.サブで1.からの値を参照しDBにアクセス

    3.2.の結果をa.aspx返す

    ということだと思うのですが2.のDBアクセス以降の処理をどのように記述したらいいのか分かりません。

    最終的には同一ページ内にグリッドビューとフォームビューを配置しグリッドビューで選択されたレコードに対応する画像をフォームビュー表示したいと思っています。


    かなり説明しにくいですが、要は b.aspx?id=1 というリクエストがされたとき、b.aspx は id が 1 の画像「のみ」をレスポンスで返すようにすればよいという事です。
    以前同じような事を説明したのでご参考に。
    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33556&forum=7&start=0

    2007年3月11日 15:51