Save & Retrieve Image from DataBase

משום מה השאלה הזאת נשאלת שוב ושוב בפורומים...
לשמור זה די ברור איך, אני יוצר פקודת sql עם פרמטרים, או stored procedure ,ומעביר אליה את הבתים של התמונה, כמובן שהעמודה בדטה בייס צריכה להיות מסוג image/binary.
לדוגמה:

 byte[] imagedata = null;

        //now we can get the image bytes with filestream on local system, or from FileUpload on our web page

        System.Data.SqlClient.SqlConnection con=new System.Data.SqlClient.SqlConnection("myconstring");

        System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand("insert into images (imagename,imagedata) values (@imagename,@imagedata)", con);

        com.Parameters.Add(new System.Data.SqlClient.SqlParameter("@imagename", "myimage.gif"));

 

        com.Parameters.Add(new System.Data.SqlClient.SqlParameter("@imagedata", imagedata));

        con.Open();

        com.ExecuteNonQuery();

יופי, איך מושכים, כרגיל, פקודת select רגילה כשמה שאנו מקבלים מהעמודה הזאת היא מערך של בתים עם נתוני התמונה.
עכשיו כדי להציג אותה ללקוח יש כמה שיטות. קודם כל ניתן להפוך את מערך הבתים לאובייקט של BitMap

  byte[] b=null;//get bytes from data base... b=(byte[])com.ExecuteScalar("select imagedata from myimages where...)

            MemoryStream ms=new MemoryStream(b);

            System.Drawing.Bitmap bm = new System.Drawing.Bitmap(ms);

או אם יש לי באתר דף שאמור להציג תמונות מדטה בייס לפי איזה פרמטר שהוא מקבל נשתמש ב Response.BinaryWrite כדי לכתוב את מערך הבתים. בדף הרגיל שבו מוצג הטקסט והתמונות נשים כתובת של תמונה עם כתובת של דף אחר, ובדף האחר נשתמש בפונקציה הזאת כדי לשלוח את הבתים בתור תמונה

נניח שיש לי דף PictureGallery.aspx
בתוך הדף אני רוצה להציג תמונות שימשכו מהדטה בייס. אני יוצר דף מיוחד שכל תפקידו הוא למשוך תמונה מהדטה בייס ולשלוח אותה ללקוח, נקרא לו PictureView.aspx
בדף PictureGallery.aspx אני שם לינקים לדף PictureView.aspx בתור כתובת של תמונה:

<img src="PictureView.aspx?imgid=34"/>

וככה מוסיף תמונות כמה שארצה. כעת בדף PictureView.aspx הקוד יראה משהו כמו:

 byte[] b = (byte[])com.ExecuteScalar("select imagedata from myimages where imageid=" + Request.Params["imgid"]);

 

        Response.ContentType = "image/jpeg";

        Response.BinaryWrite(b);

        Response.End();

תיהנו...

טוען נתונים...
אהבתם?
המליצו לאחרים!

נהניתם? בעיות? הערות?
אני רוצה לשמוע!
rss feed