ذخیره عکس در پایگاه داده

این تاپیک 19 پاسخ و 4 مشارکت کننده دارد . آخرین آپدیت توسط :  elham.e ،‏ 3 سال و 3 ماه پیش .

این تاپیک تاکنون 3631 بازدید داشته است .

نویسنده پست
یکشنبه ، 18 آگوست 2013     4:27 ب.ظ #


elham.e

Subscriber
91 پست10 تاپیک

سلام یه سوال داشتم

برای ذخیره عکس در پایگاه داده باید چی کار کرد ؟ باید یه فیلد به اسم عکس ایجاد کرد که از نوع nvarchar هست و بعد اونو در پوشه ی عکس ها ذخیره کرد و از طریق ادرس فیزیکی به اون دسترسی پیدا کرد؟

با memory Stream نمیشه این کارو ایجاد کرد؟و یه bitmap رو نیو کرد و عکس دریافتی از کاربر رو داخل اون ریخت؟

روشی که بهتره و عموما استفاده میشه چیه؟

1  تشکر
یکشنبه ، 18 آگوست 2013     7:25 ب.ظ #


وحید صالحی

Authorplus
VIP
548 پست4 تاپیک

روشی که بیشتر استفاده میشه همون روش اول هست که خودت اشاره کردی:

(((برای ذخیره عکس در پایگاه داده باید چی کار کرد ؟ باید یه فیلد به اسم عکس ایجاد کرد که از نوع nvarchar هست و بعد اونو در پوشه ی عکس ها ذخیره کرد و از طریق ادرس فیزیکی به اون دسترسی پیدا کرد؟)))

چون باعث کاهش حجم دیتابیس میشه...

3  تشکر
یکشنبه ، 18 آگوست 2013     9:48 ب.ظ #


محمد امین واحدی نیا

Subscriber
136 پست13 تاپیک

می شه توضیح و کد بدین؟

0  تشکر
یکشنبه ، 18 آگوست 2013     10:37 ب.ظ #


elham.e

Subscriber
91 پست10 تاپیک

پس استفاده از memory stream پیشنهاد نمیشه؟!

اقای واحدی نیا شما کجاشو مشکل دارید بگید شاید تونستیم کمکتون بکنیم؟

0  تشکر
یکشنبه ، 18 آگوست 2013     11:22 ب.ظ #


محمد امین واحدی نیا

Subscriber
136 پست13 تاپیک

تو کل اون روشی که آقای صالحی گفتن

0  تشکر
یکشنبه ، 18 آگوست 2013     11:27 ب.ظ #


کیوان علی محمدی

Authorplus
VIP
1792 پست4 تاپیک

برای پروژ های بزرگ با کاربران زیاد اصلا پیشنهاد نمیشه،فکرشو بکنید باید هر عکس تیدبل به باینری بشه و توی دیتابیس ذخیره بشه،معلومه حجم زیادی میگیره.

3  تشکر
دوشنبه ، 19 آگوست 2013     1:41 ق.ظ #


elham.e

Subscriber
91 پست10 تاپیک

[quote=14740]برای پروژ های بزرگ با کاربران زیاد اصلا پیشنهاد نمیشه،فکرشو بکنید باید هر عکس تیدبل به باینری بشه و توی دیتابیس ذخیره بشه،معلومه حجم زیادی میگیره.[/quote]

اوهوم ... اره برای تک تک اواتارا، تک تک عکس های تاپیک ها و... اره حجم زیادیه

درست مگید...  ممنون

0  تشکر
دوشنبه ، 19 آگوست 2013     1:42 ق.ظ #


elham.e

Subscriber
91 پست10 تاپیک

[quote=14738]تو کل اون روشی که آقای صالحی گفتن[/quote]

من درحده دانش خودم میگم امیدوارم به دردتون بخوره

شما یه فیلد به اسم Pic در پایگاه دادتون دارید که فیلد تصورتون هست مثلا از نوع varchar

میتونید در قسمت property اون ستون یه مقدار پیش فرض بهش بدین مثلا nopic.gif

یک کنترل FileUpload هم به صفحتون اضافه کنید مثلا ای دی اون Fudpic هستش

مثلا فک کنید شما میخواین یک عکس رو از کاربر دریافت کنید و در پایگاه داده ذخیره کنید در باقی موارد که ما به عنوان ادمین بخوایم عکسی رو اضافه کنیم که کاری نداره در root وب سایتمون یه پوشه عکس میسازیم و عکس ها رو میذاریم اونجا و از همون ادرس در فیلد pic استفاده کنیم

ولی اگه بخوایم از کاربر دریافت کنیم ما میایم مثلا توی یک textbox مربوط به FileUploadاز کاربر ادرس اون عکس رو در کامپیوترش ازش میگیریم:

ینی مثلا با کلیک روی دکمه  browse  ن ، کاربر عکس موردنظرشو در کامپیوتر خودش انتخاب میکنه پس ما الان در textbox مون یه ادرس داریم که مکان اون عکس رو نمایش میده و با کلیک روی دکمه مثلا سیو که ای دی اون btn1 هست عکس در پایگاه داده ذخیره بشه

ما با متد HasFile چک مسکنمس ببینیم ایا فایلی انتخاب شده یا نه اگه انتخاب شده بود نام فایل رو توی متغیر fileName میگذاریم و سپس توسط متد saveas اونو توی مسیر دلخواهمون ذخیره می کنیم

حالا ما ممکنه مسیر فیزیکی پروژمون رو ندونیم از متد server.MapPath برای فهمیدن مسیرفیزیکی پروژه استفاده میکنیم خب پس من میام یه پوشه به اسم Pics یا هر اسم دیگه ای که خواستم ایجاد میکنم توسط متد بالا مسیر فیزیکی پروژمو پیدا میکنم سپس اونو به نام فایلم میچسبونم و یه مسیر کامل ایجاد میشه

filename رو در پایگاه داده ذخیره کنید برای نمایش عکس هم برای کاربر کافیه از repeater استفاده کنید چون هم انطاف پذیرتره و هم سرعتش بیشتر از بقیه ابزارهای کاربا پایگاه داس به نظرم

و کافیه از کلمه کلید eval برای انتساب عکس به اون استفاده کنید :

من منظورتونو از سوال اینجوری برداشت کردم که توضیح دادم حالا اگه پرت گفتم ببخشید دوستان میان و جواب مورد نظرتونو میگم و اینکه شاید راه حلم زیادخوب نباشه اگه کسی از دوستان روش دیگه ای داره خوشحال میشمم به ما هم یاد بده

مرسی

ولی الان واسه خودمم یه سوالی پیش اومد اگه طرف ادرس فایل اپلود شده در اینترنت خودشو در textbox بذاره بازم کار میکنه ؟؟؟ من تاحالا امتحان نکردم!

3  تشکر
دوشنبه ، 19 آگوست 2013     9:00 ق.ظ #


محمد امین واحدی نیا

Subscriber
136 پست13 تاپیک

آقای علی محمدی شما چه روشی را پیشنهاد می کنید؟

0  تشکر
دوشنبه ، 19 آگوست 2013     10:52 ق.ظ #


کیوان علی محمدی

Authorplus
VIP
1792 پست4 تاپیک

روشی که کاربر elham.e نوشتن روش خوب و معمولی این کار هست،فقط باید کد های اعتبار سنجی پسوند ها و محتوای فایل هم بهش اضافه بشه که میشه اونو توی یه تابع نوشت و توی همین زیر روال کلیک بهش اضافه کرد،کنترل FileUpload چیزی به اسم تکست باکس نداره که کاربر بخواد آدرسی رو توی اون کپی کنه فقط یه دکمه browse داره و یه لیبل که اسم فایل رو نشون میده و حتی آدرس لوکال رو هم نشون نمیده،برای این کار شما باید خودتون یه تکست باکس جدا قرار بدید و یه دکمه هم براش بذارید و اون تصویر و اعتبار سنجی کنید و بعدش توی پوشه مورد نظر ذخیره کنید و ادرس رو بریزید توی دیتابیس و اگه هم نخواستید میتونید همون آدرس رو بریزید توی دیتابیس با این تفاوت که دیگه توی اون قسمت Eval باید چک بشه که آدرس وب هست یا توی پوشه Pic چون اگه چک نشه فقط آدرس های توی پوشه Pic نشون داده میشه.

دانلود فایل از آدرس

برای دانلود فایل از آدرس های اینترنتی و ذخیره اونها توی پوشه وب سایت خودتون ه م میتونید از این کد استفاده کنید.

3  تشکر
پست 1 تا 10 (از مجموع 20 پست)

برای پاسخ دادن به این تاپیک باید وارد سایت شوید .