PDA

View Full Version : ذخیره عکس در دیتابیس



jaykob
جمعه 01 بهمن 1389, 21:43 عصر
سلام دوستان

من می خواستم افرادی که در سایت ثبت نام می کنند بتوانند عکسی رو هم آپلود کنند و حالا توی پروفایلشون نشون داده بشه من ذخیره عکس رو به این شکل انجام می دم :



db.tbl_students.InsertOnSubmit(new tbl_student {
student_name = txtStudentName.Text,
student_family = txtStudentFamily.Text,
student_sex = sex,
student_father = txtStudentFather.Text,
student_shcode = txtStudentShcode.Text,
student_govcode = txtStudentGovcode.Text,
student_birthyear = txtStudentBirthyear.Text,
student_level = level,
student_mobile = txtStudentMobile.Text,
student_phone = txtStudentPhone.Text,
student_email = txtStudentEmail.Text,
student_pic = "~/" + upStudentPic.FileName,
student_address = txtStudentAddress.Text });

if (upStudentPic.HasFile)
upStudentPic.SaveAs(Request.PhysicalApplicationPat h + upStudentPic.FileName);

db.SubmitChanges();


خوب حالا جند مشکل این عکس سایزش هر چی باشه مثلا در grd نشون بدیم خیلی بد می شه و صفحه رو بهم می ریزه . حالا چند مسئله من یخوام عکس هام زیاد بشن و حالا با یک الگوریتمی هم مثلا یک A به اولشون اضافه کنم خوب شاید در عکس های زیاد مشکل پیدا کنه و من می خوام هر عکسی وارد کرد resize بشه یا اینکه محدودیت سایز بزارم .

آیا فقط می شه آدرس عکس رو در دیتابیس نگه داری کرد ؟

حالا من بخوام یک گالری عکس هم داشته باشم به چه شکل باید عمل کنم ؟ که مدیر بتونه عکس بزاره و به صفحه گالری اضافه بشه حالا effect هاش رو هم با js یا jq بلدم فقط ارتباطات رو بدوم چگونه برقرار کنم . می تونم انجام بدم .


با سپاس

majnun
جمعه 01 بهمن 1389, 22:08 عصر
من پیشنهاد میکنم که عکس را در بانک ذخیره نکنی ، حجم دیتابیش زیاد میشه
موقع خوندن کانکشنت به بانک زیاد باز میمونه و سرور دردش میاد

عکس را آپلود کن درون یه فولدر و آدرسش را در بانک ذخیره کن

Javad.Kashi
شنبه 02 بهمن 1389, 00:14 صبح
سلام
اول باید همانطور که دوستمون گفت آدرس عکس ها را در دیتابیس نگهداری و بعد هم اگه می خوای عکس ها را در گرید نمایش بدی می تونی کلاس c# thumbnail generator که در اینترنت پره ، استفاده کنی .

و برای اینکه آدرس عکس را در دیتابیس ذخیره کنی ، نگاهی به کد زیر بینداز.



private void InsertForm()
{
string filename_relative = string.Empty;
string filename = string.Empty;
if (fuImage.PostedFile != null)
{
string uploaded_file_extention = Path.GetExtension(FileUploadImage.PostedFile.FileN ame);
filename = Guid.NewGuid().ToString() + uploaded_file_extention;
filename_relative = "~/Uploads/Images/" + filename;
string file_path_to_save = Server.MapPath(filename_relative);

FileUploadImage.PostedFile.SaveAs(file_path_to_sav e);
}

InsertRow(
LabelImageName.Text,
filename_relative,
);
}

همانطور که می بینید هم زمان با ذخیره کردن عکس، آدرس آن را نیز در بدست می آوریم و سپس آدرس را در دیتابیس ذخیره می کنم البته در اینجا یک نام رندمی را به عنوان نام عکس قرار داده شده تا احیانا نام عکس ها یکی نباشند.

Javad_Darvish_Amiry
شنبه 02 بهمن 1389, 00:32 صبح
سلام دوست من.
با شیئ Image کار کن. اما با عرض معذرت کدی برات نمیذارم. جستجو کن. Image امکان ریسایز کردن هم بهت میده و اگه یه خورده بیشتر تلاش کنی، میتونی تصاویر رو توسط خود کاربر crop هم بکنی. (ببخشید که کد نمیذارم، چون مطمئنم اینطوری بهتر از پسش برمیای). اگه هم دسترسی به سرور خوب داری، ذخیره تصاویر تو بانک مزایای زیادی داره از جمله امنیت و مدیریت کاراتر و حجم کمتر. ولی بستگی داره به سرورت. پاینده باشی.