Member 11873864 Ответов: 0

Как восстановить изображение из базы данных в gridview


1. таблица базы данных - tbl_image
идентификатор инт
имя нварчар (50)
изображение изображения

2. HTML-страница ASPX
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                                                               <Columns>
                                                                   <asp:BoundField DataField="id" HeaderText="Id" />
                                                                   <asp:BoundField DataField="name" HeaderText="Name" />
                                                                   <asp:TemplateField HeaderText="Picture">
                                                                   <ItemTemplate>
                                                       <img src="Handler1.ashx?Id=<%# Eval("id").ToString() %>" width="150" height="100" />
                                                                       </ItemTemplate>

                                                                   </asp:TemplateField>
                                                               </Columns>
                                                           </asp:GridView>



3.Кодировку страницы aspx
protected void ShowFromDatabase(object sender, EventArgs e)
        {
            string str2 = "select id,name from tbl_image";
            obj.dr = obj.ret_dr(str2);
            GridView1.DataSource = obj.dr;
            GridView1.DataBind();
        }


4.Handler1.страницы данного
public class Handler1 : IHttpHandler
   {
       Class1 obj = new Class1();
       public void ProcessRequest(HttpContext context)
       {
           //context.Response.ContentType = "text/plain";
           //context.Response.Write("Hello World");
           string pid=context.Request.QueryString["Id"];
           string str = "select picture from tbl_image where id='"+pid+"'";
           obj.dr = obj.ret_dr(str);
           while (obj.dr.Read())
           {
               context.Response.ContentType = "image/jpg";
               //context.Response.BinaryWrite((Byte[])obj.dr[obj.dr.GetOrdinal("picture")]);
               context.Response.BinaryWrite((Byte[])obj.dr["picture"]);
           }
       }

       public bool IsReusable
       {
           get
           {
               return true;
           }
       }
   }


Вот мои четыре страницы.Если кто-то может это исправить,то любезно ответьте мне

Что я уже пробовал:

Я попробовал с этими четырьмя страницами.В окне вывода id отображается имя, но изображения там нет,только символ креста

King Fisher

есть какие-нибудь исключения ? обратитесь к этому фрагменту кода

Member 11873864

Никаких исключений.Но картинка идет с символом креста.

Member 11873864

Спасибо за ответ.Я хочу отобразить все изображения из базы данных одним щелчком мыши, а не только одно изображение.

Member 11873864

Я использовал ваш ссылочный код, но проблема все та же.

Member 11873864

Это необходимо, чтобы сохранить изображение на .объем папки?

King Fisher

пожалуйста, поставьте точку останова и отладьте ее.

Member 11873864

Я использовал точки останова и также получаю правильный идентификатор.Но изображение не появляется в окне вывода.

King Fisher

Установите точку останова в while (obj. dr. Read ()), проверьте, получаете ли Вы данные или нет.

Member 11873864

Да, я там тоже проверял.Но теперь мой код работает, потому что теперь я использовал параметризованные запросы

King Fisher

нет необходимости, потому что вы храните изображение в таблице direclty

Member 11873864

ладно

Member 11873864

Большое вам спасибо.Ваше решение работает.Но я не понимал, почему?Почему этот код работает с параметризованными SQL-запросами.

0 Ответов