2011-03-14 20 views
1

イメージとテキスト行を出力しようとしたときに、私が間違っているイメージしか表示されないのはなぜですか?Response.Write出力の問題

 SqlConnection cn = new SqlConnection("CONNECTIONINFO HERE"); 

     SqlCommand cmd = new SqlCommand("SELECT * FROM test WHERE id=" + Request.QueryString["id"], cn); 

     cn.Open(); 
     SqlDataReader dr = cmd.ExecuteReader(); 
     if (dr.Read()) //check to see if image was found 
     { 
      Response.ContentType = dr["fileType"].ToString(); 
      Response.BinaryWrite((byte[])dr["imagesmall"]); 
      Response.Write("<br/>This is your image, if this is incorrect please contact the administrator."); 
     } 
     cn.Close(); 
+0

「ContentType」は何に設定されていますか? – Patrick

答えて

1

画像のHttpHandlerを作成し、画像タグから呼び出します。

public class ImageHandler : IHttpHandler 
{ 
    public bool IsReusable 
    { 
     get { return true; } 
    } 

    public void ProcessRequest(HttpContext context) 
    { 
     HttpRequest request = context.Request; 
     HttpResponse response = context.Response; 

     SqlConnection cn = new SqlConnection("CONNECTIONINFO HERE"); 
     SqlCommand cmd = new SqlCommand("SELECT * FROM test WHERE id=" + request.QueryString["id"], cn); 

     cn.Open(); 
     SqlDataReader dr = cmd.ExecuteReader(); 
     if (dr.Read()) //check to see if image was found 
     { 
      response.ContentType = dr["fileType"].ToString(); 
      response.BinaryWrite((byte[])dr["imagesmall"]); 
     } 
     cn.Close(); 
    } 
} 

次に、このようにそれを使用します:

<img src="/ImageHandler.axd?id=1" /> 
<p>This is your image, if this is incorrect please contact the administrator.</p> 

あなたはそれはあなたが使用しているものであればweb.configファイルまたはIIS 7でハンドラーを構成する必要があります。このような

。あなたがたContentTypeに設定されているもの言うことはありませんhttp://mvolo.com/blogs/serverside/archive/2007/08/15/Developing-IIS7-web-server-features-with-the-.NET-framework.aspx

+0

詳細を教えてください。 – Patrick

+0

私の最初の答えは少し短かった。私は私の女の子を寝かせなければならなかった:) –

3

コンテンツタイプをバイナリイメージタイプに設定しています。ブラウザがテキストを無視している可能性が最も高いです。両方のタイプをレスポンスに含めるには、応答タイプとしてtext/htmlとし、<img>タグを使用してインライン画像データを作成する必要があります。

インラインイメージデータの例については、hereを参照してください。

1

バイナリ応答とhtmlコンテンツ応答を混在させることはできません。イメージを "保存"すると、16進エディタでバイナリイメージデータが表示されます。これは、ファイルの末尾にhtmlを少し入れたものです。

4

まあ、コンテンツタイプはおそらくjpg、gif、または他の画像タイプのようなものに設定されています。私は実際にブラウザがエラーを出すのではなく、画像を表示しているのに驚いています。

ポイントは、応答タイプを混在させることはできません。

テキストを表示する必要がある場合は、通常のHTMLファイルを出力する必要があります。画像タグには画像と関連テキストが下に表示されます。

0

:ここ

はどのようにあります。それが 'jpeg'または同様のものに設定されていると、出力したHTMLはHTMLとして解釈されません。これは単なるバイナリデータです。