PDA

View Full Version : آموزش: ذخیره و بازیابی تصویر در sql بصورت مستقیم در ASP.NET



sibooy
سه شنبه 19 اردیبهشت 1396, 21:08 عصر
نحوه ذخیره عکس در بانک اطلاعاتی بصورت varbinary(MAX)
از اونجایی که اکثر توضیح های توی اینترنت برای ذخیره عکس در بانک اطلاعاتی درمورد اینه که عکس رو توی پوشه ذخیره کنیم و نام عکس رو توی بانک من ذخیره کردن عکس رو بصورت مستقیم در بانک اطلاعاتی sql رو اینجا میذارم. البته باید توجه داشته باشید که عکس ها باید کم حجم باشن تا تراکنش سریعتر انجام بشه وگرنه فایل های سنگین رو بهتره توی پوشه ذخیره کنید نه بانک اطلاعاتی.:چشمک::متفکر:
این کد ها در بخش code behinde نوشته می شه

byte[] imgbyte = null;// یک آرایه از نوع بایت تعریف کنید
HttpPostedFile postedFile = imgUpload.PostedFile;
imgUpload نام کنترل آپلود فایلمون هست
string fileExtension = Path.GetExtension(postedFile.FileName);// پسوند فایل رو جدا کنید ببینید اصلا فایل عکس هست یا نه
if (fileExtension.ToLower() == ".jpg" || fileExtension.ToLower() == ".png" || fileExtension.ToLower() == ".gif" || fileExtension.ToLower() == ".jpeg")
{
تبدیل فایل به آرایه
Stream stream = postedFile.InputStream;
BinaryReader reader = new BinaryReader(stream);
imgbyte = reader.ReadBytes((int)stream.Length);
SqlCommand cmd = new Sqlcommand("INSERT INTO tableName(Image) VALUES(@img)",con);
con رشته اتصال شما هست که قبلا تعریف کردین
con.Open();//رشته اتصال رو باز می کنیم
cmd.Parameters.Add("@img",SqlDbType.VarBinary).Val ue = imgByte;// ذخیره تصویر در بانک
cmd.ExecuteNonQuery();// اجرای ذخیره در بانک
con.Close();بستن کانکشن
}
else
{
flag = false;
er10.Text = "لطفا یک فایل مناسب برای تصویر انتخاب کنید!";
}



بازیابی تصویر از دیتابیس و نمایش در یک کنترل image

SqlCommand cmd = new SqlCommand("SELECT Image FROM tableName",con);
DataSet ds = new DataSet();
con.Open()
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.fill(ds);
foreach(DataRow dr in ds.Tables[0].Rows)
{
imgbyte = (byte[])(dr["ImageColumnNameHere"].ToString());//خواندن تصویر از بانک
string str = Convert.ToBase64String(imgbyte);// تبدیل به رشته
spc1.ImageUrl = "data:Image/png;base64," + str; انتقال به کنترل تصویر
spc1 نام ایمیج کنترل ما در فایل aspx است.
}
con.Close();