2011-03-14 105 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 2011-03-14 18:12:32

回答

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的處理程序,如果這是你使用的是什麼。

方法如下:http://mvolo.com/blogs/serverside/archive/2007/08/15/Developing-IIS7-web-server-features-with-the-.NET-framework.aspx

+0

請您詳細說明一下嗎? – Patrick 2011-03-14 18:15:06

+0

我的初步答案有點短。我不得不讓我的女孩睡覺:) – 2011-03-14 18:50:42

3

您正在將您的內容類型設置爲二進制圖像類型。瀏覽器很可能忽略了文本。如果您想在回覆中同時使用這兩種類型,則可能需要使用text/html作爲響應類型,並使用<img>標籤進行內嵌圖像數據。

查看here查看內嵌圖像數據的示例。

1

您不能將二進制響應與html內容響應混合在一起。如果你「保存」你的圖像,你會注意到它是一個十六進制編輯器,它是二進制圖像數據,你可以在文件末尾添加很少的html。

4

那麼..內容類型大概是設置爲像jpg,gif或其他一些圖像類型的東西。我真的很驚訝,瀏覽器顯示的圖像,而不是錯誤。

要點是,你不能混合響應類型。

如果您必須顯示文本,那麼您需要發出一個普通的HTML文件,圖像標籤顯示圖像以及底部的相關文本。

0

你不說什麼的ContentType設置爲。如果它設置爲'jpeg'或類似的話,那麼你輸出的HTML將不會被解釋爲HTML - 它只是更多的二進制數據。