Обработчик изображений не перезагружает мой образ! Или мой дефуалт-образ .
привет
я использую обработчики для загрузки редактирования удаления изображений это работает просто отлично ! но когда я удаляю и устанавливаю дефуалт-изображение, оно не появляется до тех пор, пока я не обновлю страницу !
Что я уже пробовал:
public class Handler1 : IHttpHandler, IRequiresSessionState { public static string strCon = System.Configuration.ConfigurationManager.AppSettings["connectionstring"]; public void ProcessRequest(HttpContext context) { SqlConnection _con = new SqlConnection(strCon); var id = context.Request.Params.GetValues("id"); int ImgNumber = Convert.ToInt32(id[0].ToString()); int wasteCheckID = Convert.ToInt32(context.Session["WasteCheckID"]); string stDelete = "DELETE FROM tbl_LogisticsWasteCheckImg WHERE WasteCheckID=" + wasteCheckID + " AND ImgNumber=" + ImgNumber; SqlCommand cmdDelete = new SqlCommand(stDelete, _con); _con.Open(); cmdDelete.ExecuteNonQuery(); _con.Close(); string strget = "select img from tbl_logisticswastecheckimg where wastecheckid=114 and imgnumber=1"; _con.Open(); using (SqlDataAdapter sda = new SqlDataAdapter(strget, _con)) { DataTable dt = new DataTable(); sda.Fill(dt); if (dt.Rows.Count > 0) { byte[] bytes = (byte[])dt.Rows[0]["img"]; context.Response.BinaryWrite(bytes); context.Response.End(); } else { context.Response.WriteFile("~/images/a.png"); //read image file into image object. Image img = Image.FromFile(context.Server.MapPath("~/images/a.png")); //imageconverter class convert image object to byte array. byte[] bytes = (byte[])(new ImageConverter()).ConvertTo(img, typeof(byte[])); context.Response.BinaryWrite(bytes); context.Response.End(); } } } public bool IsReusable { get { return false; } } } }
Richard Deeming
"DELETE FROM tbl_LogisticsWasteCheckImg WHERE WasteCheckID=" + wasteCheckID + " AND ImgNumber=" + ImgNumber
Не делай этого так!
В данный конкретный случай, поскольку оба параметра являются целыми числами, вы должны быть в порядке. Но использование конкатенации строк для построения SQL - запроса может привести и приведет к уязвимостям SQL-инъекций. Вместо этого всегда используйте параметризованный запрос.
const string stDelete = "DELETE FROM tbl_LogisticsWasteCheckImg WHERE WasteCheckID = @WasteCheckID AND ImgNumber = @ImgNumber"; using (SqlCommand cmdDelete = new SqlCommand(strDelete, _con)) { cmdDelete.Parameters.AddWithValue("@WasteCheckID", wasteCheckID); cmdDelete.Parameters.AddWithValue("@ImgNumber", ImgNumber); _con.Open(); cmdDelete.ExecuteNonQuery(); _con.Close(); }
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
Member 13990122
привет
Спасибо , да, я немного знаю об этом :) но спасибо агиан ,