2011-02-20 9 views
2

私はウェブカメラの画像を撮ってこの画像をバイナリデータとしてSQLデータベースに入れても問題ないです。しかし、私は可能な最も簡単な手段でページ上の画像を単に表示したい別の.net Webページに問題があります。SQL <binary data> ASP.NETのページに表示される画像のタイプ

ここにコード例がありますが、頭の上からビットとボブを試していて、ソリューションの近くにいれば単なる手掛かりがないためです。

public partial class Default2 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings["ConnectionString"]; 
     SqlConnection con = new SqlConnection(settings.ConnectionString); 

     SqlCommand MyCmd; 

     MyCmd = new SqlCommand("SELECT image FROM contractors WHERE number like @number", con); 
     MyCmd.Parameters.AddWithValue("@number", "1"); 
     Image1 = MyCmd.ExecuteScalar(); 
    } 

そして、これまで私は

エラー1が暗黙のうちに「System.Web.UI.WebControls.Image」にタイプ「オブジェクト」に変換できませんエラーメッセージが表示されます。明示的な変換があります(キャストがありませんか?)

しかし、私は右の線に沿っているかどうかわかりませんので、ここでは特にそれについては投稿しませんでしたが、全体的にやろうとしている。

答えて

5

あなたはImage変数に直接クエリの結果を代入している - ImageコントロールはASP.NETページ上の画像を表示するためにURLを必要とするので、これは、働くことはありません。

最も一般的なアプローチは、画像データを返すHttpハンドラを作成し、ハンドラURLをImageUrlとして使用することです。

this MSDNのHttpハンドラに関するページを参照してください。thisあなたが探しているものを達成する方法に関する質問。

2

base64 encoded data uriを使用するか、Response.BinaryWriteを使用して画像データを返すURLを使用してください。あなたの例では、Image1変数はバイト配列である必要がありますし、適切なヘッダーが設定されたResponse.BinaryWriteです。

+0

http://en.wikipedia.org/wiki/Data_URIに従って、さまざまなブラウザでこれをテストする必要があります。 _scheme#Web_browser_support IE8の最大長は32Kbです。私が正しくリコールすれば、IE6はそれをまったく処理しません。 –

+0

それは本当です。それは私が投稿したリンクのいくつかを述べているので、私はそれを扱う2つの可能な方法について述べました。 – Nimrod

1


あなたはExecuteReader

を行う必要があり ExecuteScalarで画像データを取得することはできませんImageコントロールに画像を取得する方法についてオデッドから答えを読みます
var reader = MyCmd.ExecuteReader(); 
if (reader.NextResult()) 
{ 
    byte[] imgData = (byte[])reader["image"]; 
} 
関連する問題