2013-07-17 2 views
0

Я храню изображения в базе данных SQL Server в виде массивов байтов и используя обработчик для отображения изображения на веб-странице. Изображения поступают должным образом в Internet Explorer, но некоторые из них являются странными символами в хроме и firefox.Отображение изображения из базы данных SQL Server

Как

ÿØÿáExifII*ÿìDuckyPÿáohttp://ns.adobe.com/xap/1.0/ ÿíHPhotoshop 3.08BIMZ%G8BIM%üá‰È·Éx/4b4XwëÿîAdobedÀÿÛ 

Мой код для обработчика

if (context.Request.QueryString["id"] != null) 
{ 
    // context.Response.Write(context.Request.QueryString["id"]); 
    string dbcon = ConfigurationManager.ConnectionStrings["CS1"].ConnectionString; 

    SqlConnection con = new SqlConnection(dbcon); 
    con.Open(); 

    SqlCommand cmd = new SqlCommand("select Offers_bigimage from Offers where [email protected]", con); 
    cmd.Parameters.AddWithValue("@empid", context.Request.QueryString["id"].ToString()); 

    SqlDataReader dr = cmd.ExecuteReader(); 
    dr.Read(); 
    context.Response.BinaryWrite((byte[])dr["Offers_bigimage"]); 
    dr.Close(); 
    con.Close(); 
} 
else 
{ 
    context.Response.Write("No Image Found"); 
} 

Пожалуйста, помогите

ответ

2

Вы должны установить тип содержимого для изображения. Вы можете найти список типов mime в зависимости от типа используемого изображения, ниже приведен пример jpg. Обратите внимание на строку:

context.Response.ContentType = "image/jpeg"; 

Полный пример

if (context.Request.QueryString["id"] != null) 
{ 
    // context.Response.Write(context.Request.QueryString["id"]); 
    string dbcon = ConfigurationManager.ConnectionStrings["CS1"].ConnectionString; 
    SqlConnection con = new SqlConnection(dbcon); 
    con.Open(); 
    SqlCommand cmd = new SqlCommand("select Offers_bigimage from Offers where [email protected]", con); 
    cmd.Parameters.AddWithValue("@empid", context.Request.QueryString["id"].ToString()); 
    SqlDataReader dr = cmd.ExecuteReader(); 
    dr.Read(); 

    context.Response.ContentType = "image/jpeg"; 
    context.Response.BinaryWrite((byte[])dr["Offers_bigimage"]); 
    dr.Close(); 
    con.Close(); 
} 
else 
{ 
    context.Response.ContentType = "text/plain"; 
    context.Response.Write("No Image Found"); 
} 
+0

спасибо много работал для меня .. Еще один вопрос, который я думаю, что вы выше код может быть использован для SQL инъекций или слепой инъекции SQL –

+0

Нет, это не потому, что вы используете параметризованные запросы. Однако одна из проблем заключается в том, что вы неправильно обрабатываете Request.QueryString, например, если это должно быть целое число, которое вы должны проверить, чтобы убедиться, что отправленное является целым числом перед перемещением вперед. – nerdybeardo

+0

Спасибо большое за ваш ответ, очень ценю это –

Смежные вопросы