Oracle データベースへのイメージの挿入が完了しました。今、私はそれを表示しようとしています。
私のハンドラーコードは次のとおりです。
public void ProcessRequest(HttpContext context)
{
OracleDataReader dr = null;
OracleCommand cmd = null;
OracleConnection conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVER_NAME=XE)));User Id=sakthi_studdb;Password=sakthi;");
try
{
cmd = new OracleCommand
("select IMAGE from IMAGETBL where ID=" +
context.Request.QueryString["imgid"], conn);
conn.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
context.Response.ContentType = "image/jpg";
context.Response.BinaryWrite((byte[])dr["IMAGE"]);
}
if (dr != null)
dr.Close();
}
finally
{
if (conn != null)
conn.Close();
}
}
そして、私のaspxイメージコントロールは次のとおりです:
<div>
This is the student image requested:
<asp:Image ID="picone" ImageUrl="~/Handler1.ashx?imgid=299" runat="server" />
</div>
aspx を実行すると、エラーは見つかりません。しかし、画像が表示されません。以下の出力のスクリーンショットを見つけることができます。
何が悪いのか知りたいです。
public void ProcessRequest(HttpContext context)
{
OracleConnection conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVER_NAME=XE)));User Id=sakthi_studdb;Password=sakthi;");
try
{
long imageId = Convert.ToInt64(context.Request.QueryString["imgid"]);
using (OracleCommand cmd = new OracleCommand("select IMAGE from IMAGETBL where ID=:ID", conn))
{
cmd.Parameters.Add(":ID", OracleDbType.Int64).Value = imageId;
conn.Open();
context.Response.ContentType = "image/gif";
context.Response.BinaryWrite((byte[])cmd.ExecuteScalar());
}
}
finally
{
if (conn != null)
conn.Close();
}
}
これでもうまくいかない