Вывод на странице картинки из базы данных
От: Кочевник Казахстан  
Дата: 11.04.03 04:01
Оценка: 10 (1)
Здравствуйте
Есть одна непонятная проблема. На страницу выводим картинку, которая хранится в БД, поле типа image.
Суть проблемы:
Нетскейп выводит картинку, а Экплорер нет, не зависает, а ждет бесконечно долго чего-то от сервера.
Ставил брэкпойнты, все нормально — до Response.End() и con.Close() сервер проходит.
Причем при просмотре на той машине (то есть если набирать localhost/mysite/myapp), где работает IIS проблем нет, и Нетскейп и Экплорер работают. Проблема на зависит от версии Экплорер (и 5 и 6)
Есть подозрения, что Экплорер не "врубается", что вся картинка уже у него и надо бы показать ее. Как ему это обяснить?
Может кто сталкивался с такой проблемой, буду благодарен за совет

Так выглядит код с картинкой
Image1.ImageUrl="planirovka.aspx?reid=" + strReID;


а тут код planirovka.aspx
    public class Planirovka : System.Web.UI.Page
    {
        private void Page_Load(object sender, System.EventArgs e)
        {
            if( Request.QueryString["reid"] != null )
            {
                DisplayImage(Request.QueryString["reid"]);
            }
        }
        private void DisplayImage(string strReId)
        {
            SqlConnection con = new SqlConnection(DBProvider.ConnectionString);
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "select planirovka from tblRealEstate where RealEstateID=" + strReId;
            cmd.Connection = con;
            try 
            {
                con.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                Response.Clear();
                Response.ContentType = "image/jpeg";
                int bufferSize=1000;
                byte[] outbyte = new byte[bufferSize];
                long startIndex = 0;
                long retval ;
                BinaryWriter bw = new BinaryWriter(Response.OutputStream);
                while (dr.Read())
                {
                    retval = dr.GetBytes(0, startIndex, outbyte, 0, bufferSize);
                    while (retval == bufferSize)
                    {
                        bw.Write(outbyte);
                        //bw.Flush();
                        startIndex+= bufferSize;
                        retval = dr.GetBytes(0, startIndex, outbyte, 0, bufferSize);
                    }
                    bw.Write(outbyte);
                    //bw.Flush();
                    bw.Close();
                }
                Response.End();
                dr.Close(); 
            }
            catch (SqlException SqlEx)
            {
                Server.Transfer("Error.aspx");
            }
            finally
            {
                con.Close();

            }
        }

    }
Re: Вывод на странице картинки из базы данных
От: mogadanez Чехия  
Дата: 11.04.03 06:01
Оценка:
Здравствуйте, Кочевник, Вы писали:

попробуй:

1. выводить картинку проще:

Response.ContentType="image/gif";
image1.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Gif);

2. Response.AddHeader("ContentSize","123"); //точно не помню так или нет, но смысл такой
... << RSDN@Home 1.0 beta 6a >>
Re[2]: Вывод на странице картинки из базы данных
От: Кочевник Казахстан  
Дата: 11.04.03 07:09
Оценка: :)
Здравствуйте, mogadanez, Вы писали:

M>Здравствуйте, Кочевник, Вы писали:


M>попробуй:


M>1. выводить картинку проще:


M>Response.ContentType="image/gif";

M>image1.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Gif);

M>2. Response.AddHeader("ContentSize","123"); //точно не помню так или нет, но смысл такой


Большой рахмет, пойду в серверную юрту, попробую
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.