Динамически обрабатывать изображения из БД в ImageHandler.ashx.cs

Я работаю над сайтом блога. Пользователь может "просмотреть" элемент управления FileUpload и выбрать несколько изображений для загрузки вместе со своим постом. Каждый пост имеет уникальный идентификатор сообщения в БД. Я выяснил, как вставить все загруженные файлы в БД под одним идентификатором сообщения, например так: (Я вставляю их как тип данных "изображение")

 try
            {
                conn.Open();
                SqlCommand cmdInsert = new SqlCommand("INSERT INTO BlogMessages (Title, Message, Date, Author, IPAddress) VALUES (@Title, @Message, @Date, @Author, @IPAddress)", conn);
                cmdInsert.Parameters.AddWithValue("@Title", tbTitle.Text.Trim());
                cmdInsert.Parameters.AddWithValue("@Message", tbMessage.Text.Trim());
                cmdInsert.Parameters.AddWithValue("@Date", DateTime.Now);
                cmdInsert.Parameters.AddWithValue("@Author", tbAuthor.Text.Trim());
                cmdInsert.Parameters.AddWithValue("@IPAddress", ip);
                cmdInsert.ExecuteNonQuery();

                if (imageUpload.HasFiles)
                {
                    System.Text.StringBuilder sb = new System.Text.StringBuilder();
                    HttpPostedFile file;

                    SqlCommand maxMessId = new SqlCommand("SELECT Max(MessageID) FROM BlogMessages", conn);
                    lastMessageID = Convert.ToInt32(maxMessId.ExecuteScalar());

                    foreach (var uploadedFile in imageUpload.PostedFiles)
                    {
                        file = uploadedFile; 
                        MemoryStream ms = new MemoryStream();
                        file.InputStream.CopyTo(ms);
                        byte[] byts = ms.ToArray();
                        ms.Dispose();

                        SqlCommand cmdInsertImage = new SqlCommand("INSERT INTO BlogImages(Image, MessageID) VALUES (@Image, @MessageID)", conn);
                        cmdInsertImage.Parameters.AddWithValue("@Image", SqlDbType.Image).Value = byts;
                        cmdInsertImage.Parameters.AddWithValue("@MessageID", lastMessageID);
                        cmdInsertImage.ExecuteNonQuery();
                        byts = null;
                        cmdInsertImage = null; 


                    }

                }

Однако у меня возникают проблемы с динамическим извлечением изображений для отображения в моем ImageHandler. Кажется, что я могу получить все изображения под определенным MessageID и вставить их в набор данных, но после этого я ищу руководство, и мне не удалось найти рабочее решение с помощью исследований. до сих пор. Вот соответствующий код внутри публичного void Process Request из ImageHandler.ashx.cs:

  try
            {
                int messageid = Convert.ToInt32(context.Request.QueryString["mid"]);

                SqlDataAdapter sda = new SqlDataAdapter("SELECT Image from BlogImages WHERE Image IS NOT NULL AND MessageID=" + messageid, conn);
                System.Data.DataSet data = new DataSet();
                sda.Fill(data);


                if (data !=null)
                {

                    byte[] result = (byte[])data.Tables[0].Rows[0]["ImageContent"];
                    result.Initialize();
                    context.Response.ContentType = data.Tables[0].Rows[0]["ImageExt"].ToString();
                    context.Response.BinaryWrite(result);

                }
                else
                {
                    context.Response.WriteFile("No Image");
                }
            }

Спасибо!

0 ответов

Другие вопросы по тегам