PDA

View Full Version : گفتگو: روش درست استفاده از عکس در دیتابیس



tina.net
سه شنبه 08 دی 1388, 10:47 صبح
با سلام.
من میخوام در بخش خبری سایتم که شامل فیلدهای تیتر، متن خبر و عکس است، اطلاعات ثبت کنم(بانک اکسس).
اطلاعات توی یه دیتالیست نمایش داده میشه که یه image برای عکس و یه لیبل برای تیتر و یه لیترال برای متن کامل خبر هست.
مشکل من فقط قسمته عکسه، سرچ کردم چند روش پیدا کردم، اما نمیدونم کدوم روش بهتر و منطقی تره.
با تشکر...

meysampaknahad
سه شنبه 08 دی 1388, 11:24 صبح
به نظر من برای اینکه حجم دیتابیست خیلی زیاد نشه بهتره که آدرس عکس رو داخل دیتابیس نگهداری کنید.

tina.net
سه شنبه 08 دی 1388, 11:43 صبح
لطفا بیشتر توضیح بدین، منظورتون اینه که عکس تو پوشه خودمون کپی بشه بعد آدرسش رو بزاریم یا آدرس عکس رو از همون سایت منبع توی بانک ذخیره کنیم.
لطفا بقیه دوستان هم اگه نظری دارن بگن.

afsaneh.asp
سه شنبه 08 دی 1388, 13:44 عصر
به اينصورت كه شما عكسها رو در داخل يه فولدر مشخص مثلا imagesذخيره ميكنيد و در ديتابيس فقط يه سطر به نام imageurl اضافه كنيد و عكس مخصوص به هر فيلد رو دقيقا هموني نامي كه به اون عكس در پوشه images داديد بزاريد.
خب حالا يه مثال: مثلا در يه datalist واسه ايميجي كه navigationurlاش از قسمت edittemplateاستفاده شده .

Eval("imageurl","/website1/images/{0}.jpg")

tina.net
سه شنبه 08 دی 1388, 16:50 عصر
خوب چه جوری میشه به این پوشه دسترسی داشت که عکسهارو داخلش کپی کنیم یا بعدا با حذف یه خبر عکسهای مربوط به اون هم پاک بشه.
چون سایت به مشتری داده میشه و اون که به چوشه ها دسترسی نداره، فقط از طریق ادیتور و ... خبر ثبت میکنه.

A.S.Roma
سه شنبه 08 دی 1388, 16:59 عصر
خوب چه جوری میشه به این پوشه دسترسی داشت که عکسهارو داخلش کپی کنیم یا بعدا با حذف یه خبر عکسهای مربوط به اون هم پاک بشه.
چون سایت به مشتری داده میشه و اون که به چوشه ها دسترسی نداره، فقط از طریق ادیتور و ... خبر ثبت میکنه.
در همان "ثبت خبر" عکس را از یوزر میگیرد و در هر پوشه ای که می خواهید Upload می کنید .

meysampaknahad
چهارشنبه 09 دی 1388, 11:51 صبح
سلام
ببینید دوست عزیز با استفاده از این کد می تونید عکس رو داخل پوشه مورد نظرتون ذخیره کنید:

FileUpload1.SaveAs(Server.MapPath("~/Images/Uploads/" + myname.ToString()));

آدرس عکس رو هم که می تونید اینطوری داخل یه متغییر ذخیره کنید:

string=savepath;
savepath = "~/Images/Uploads/";
string myname = DateTime.Now.Ticks.ToString();
myname += "." + FileUpload1.FileName;
savepath += myname;

حالا باید نام نهایی فایلتون یعنی savepath رو داخل دیتابیستون ذخیره کنید.
و هر موقع هم که بخواهید اون رو نمایش بدید کافی خاصیت Imageurl کنترلتون رو به این نام بایند کنید.
موفق باشید.

tina.net
پنج شنبه 10 دی 1388, 12:20 عصر
با تشکر از meysampaknahad
فقط اگه میشه بگین تو کد اول آدرس مبدا عکس چه جوری نوشته میشه؟

yekta64
پنج شنبه 10 دی 1388, 12:51 عصر
سلام
شما وقتی از فایا آپلود استفاده م یکنید و از کد اول برای ذخیره اون توی دیتابیس استفاده می کنید اسم عکس از فایل آپلود گرفته میشه و در کنار آدرس پوشه در دیتابیس ذخیره میشه

tina.net
یک شنبه 13 دی 1388, 10:59 صبح
حالا دو تا مورد:
1. چه جوری عکسهای مربوط به خبرهایی که قدیمین و خودشون پاک میشن رو از تو پوشه پاک کنیم؟

2. چه مشکلی داره اگه عکسهارو توی بانک ذخیره کنیم؟

yekta64
یک شنبه 13 دی 1388, 13:10 عصر
سلام
خوب اول سوال دوموتون رو جواب می دم
در صورت ذخیره ی عکس ها در دیتابیس حجم جدول رو بالا می برید امکان داره حجم عکس ها خیلی بالا باشه و خوب این ممکن باعث ایجاد اخلال بشه البته میشه مستقیم عکسا رو توی دیتابیس ذخیره کردن ولی اغلب توصیه میشه که عکس ها در پوشه و ادرس اونا توی دیتابیس ذخیره بشه که به نظر من این کار خیلی راحتر هستش
اما سوال اول:
شما برای حذف عکس از توی پوشه از دستور زیر استفاده می کنید:


system.IO.File.Delete(serever.mappath("مسیر عکس در پوشه"))


موفق باشید.

sinaone1
یک شنبه 27 دی 1388, 12:39 عصر
دوستمون یه چیز کوچولو رو جا انداختند که من به شما میگم

حتما برای Delete کردن در یک پوشه باید به اون پوشه پرمیژن Modify بدید و پرمیژن های پایینتر از اون کافی نیست :لبخندساده: