مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

hosseinemn2

عضویت از 1398/05/02

ذخیره عکس در دیتابیس sql و نمایش عکس در دیتا گرید

  • شنبه 5 مرداد 1398
  • 05:06
تشکر میکنم

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

   

پاسخ های این پرسش

تعداد پاسخ ها : 22 پاسخ
کاربر سایت

AmirGhasemi

عضویت از 1392/02/25

  • شنبه 5 مرداد 1398
  • 07:22
کاربر سایت

hosseinemn2

عضویت از 1398/05/02

  • شنبه 5 مرداد 1398
  • 07:30

مرسی ولی من میخوام خود عکس توی دیتابیس داشته باشم که بتونم توی خود دیتا گرید نمایشش بدم

کاربر سایت

mehrnazhadi

عضویت از 1397/03/17

  • شنبه 5 مرداد 1398
  • 08:08
سلام دوستان عزیز. بنده هم همین مشکل رو دارم. البته من میخوام با استفاده از تکنولوژی Linq در سی شارپ. عمل ذخیره و بازیابی تصاویر رو انجام بدم. خیلی گشتم تو سایتای ایرانی چیزی پیدا نکردم و تعجب میکنم چراااا؟!!!!!! اما وقتی داخل یوتیوب جستجو کردم فیلمی رو پیدا کردم که خیلی خوب این کد رو واسم پیاده سازی کرد. اما مشکلی که هست اینه که عمل Insert انجام میشه اما وقتی میخوام select کنم و عکس رو از دیتا بیس واکشی کنم بهم ارور میده، دوستان بانکم هم از نوع sql express هستش، ایا به این دلیل هست خطای موجود. من اگه کسی بتونه این کد رو بهم بده هزینه ش رو پرداخت می کنم . ممنونم
کاربر سایت

hosseinemn2

عضویت از 1398/05/02

  • شنبه 5 مرداد 1398
  • 09:33

دوست عزیز من مشکلم حل شد ممنونم ازتون

و شما دوست عزیز mehrnazhadi

داخل دیتا گریدتونم باید فیلد تصویر به صورت Image باشه

کاربر سایت

mehrnazhadi

عضویت از 1397/03/17

  • شنبه 5 مرداد 1398
  • 12:40
ببخشید شما واسه asp این کد و میخواین یا ado یا linq. من فیلد دیتا بیسم هم از نوع image هستش
کاربر سایت

hosseinemn2

عضویت از 1398/05/02

  • شنبه 5 مرداد 1398
  • 21:11

من دارم Ado میگم

کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • یکشنبه 6 مرداد 1398
  • 09:39

سلام.نظرات رو خوندم، مفید بود.

دوست عزیز mehrnazhadi، شما در چه محیطی و به چه زبانی میخواهید تصویر رو در بانک ذخیره کنید ؟؟؟ بفرمایید تا کد رو بدیم. اینها ساده ان نیاز نیست زیاد بگردین

کاربر سایت

mehrnazhadi

عضویت از 1397/03/17

  • یکشنبه 6 مرداد 1398
  • 10:07
خدا خیرتون بده . اگه کمکم بکنید ممنونتون میشم. من در محیط ویژوال استودیو و ویندوز فرم سی شارپ کار میکنم. دیتا بیسم اس کیو ال اکسپرس هست و با تکنولوژی linq.
کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • یکشنبه 6 مرداد 1398
  • 10:19

نوع ستون در sql رو از نوع byte[] در نظر بگیرید.

حالا برای تبدیل عکس به byte[] متد زیر را بکار می بریم:

 public static byte[] imageToByteArray(Image imageIn)
        {
            if (imageIn == null) return null;
            MemoryStream ms = new MemoryStream();
            imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            return ms.ToArray();
        }

نحوه استفاده به این شکل است : (مثال)

User user = new User();
user.Avatar=imageToByteArray(imgAvatar.Image);
Context.User.Add(user);
Context.SaveChanges();

به همین راحتی تصویر شما در دیتابیس ذخیره شد. ناگفته نماند imgAvatar یک کنترل PictureBox است.

حالا برای سلکت کردن کاربر ثبت شده و نمایش آواتار آن در PictureBox داریم:

User user = Context.User.FirstOrDefault();

حالا تصویر رو در متغیر user داریم ولی از نوع byte[] است و قابل نمایش در PictureBox نیستش. حالا بکمک متد زیر تبدیل به عکس میکنیم :

 public static Image byteArrayToImage(byte[] byteArrayIn)
        {
            if (byteArrayIn == null) return null;
            MemoryStream ms = new MemoryStream(byteArrayIn);
            Image returnImage = Image.FromStream(ms);
            return returnImage;
        }

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

imgAvatar.Image = byteArrayToImage(user.Avatar);

کاربر سایت

mehrnazhadi

عضویت از 1397/03/17

  • یکشنبه 6 مرداد 1398
  • 10:21
ممنونم آقای نصیری . خدا خیرتون بده ‌ تشکر میکنممم
کاربر سایت

سورنا پک

عضویت از 1398/05/06

  • یکشنبه 6 مرداد 1398
  • 11:18

ممنونم. مشکل منم حل کردید :))

کاربر سایت

mehrnazhadi

عضویت از 1397/03/17

  • سه شنبه 8 مرداد 1398
  • 10:41

سلام عذر می خوام من الان اومدم کد رو تست کنم 

User user = new User();
user.Avatar=imageToByteArray(imgAvatar.Image);

این user چی هستش؟

من هر کاری کردم خطا داد و avatar رو هم نمیاره

کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • سه شنبه 8 مرداد 1398
  • 11:32
سلام.اون user یک جدول خیالی که یه سمپل یا یه مثال هست براتون نوشتم. شما باید مدل یا نام جدول خودتون رو بنویسید و اون avatar نیز مثاله. شما باید فیلد خودتون رو بجاش بنویسید.
کاربر سایت

mehrnazhadi

عضویت از 1397/03/17

  • سه شنبه 8 مرداد 1398
  • 11:41

ممنونم . خدا خیرتون بده

کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • سه شنبه 8 مرداد 1398
  • 11:43
اگه نتونستید بفرمایید وصل بشیم به سیستمتون و حل کنیم.
کاربر سایت

mehrnazhadi

عضویت از 1397/03/17

  • سه شنبه 8 مرداد 1398
  • 12:34

سلام مجدد این پیاغام خطا رو میده

Object reference not set to an instance of an object.

البته من داخل اس کیو ال فیلدی با نوع byte  پیدا نکردم و از نوع var binary max  استفاده کردم

کاربر سایت

mehrnazhadi

عضویت از 1397/03/17

  • سه شنبه 8 مرداد 1398
  • 12:35

اگه لطف کنین که ممنون میشم

کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • سه شنبه 8 مرداد 1398
  • 12:39
آیدی anydesk رو بدین
کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • سه شنبه 8 مرداد 1398
  • 12:59
عذر میخوام بدلیل اختلال در اینترنت فعلی نشد کاری بکنم. با اینترنت خودم شب حل میکنم
کاربر سایت

mehrnazhadi

عضویت از 1397/03/17

  • سه شنبه 8 مرداد 1398
  • 21:28

جناب نصیری آنلاین هستین؟؟؟

کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • چهارشنبه 9 مرداد 1398
  • 22:21

بله در خدمتم

کاربر سایت

mehrnazhadi

عضویت از 1397/03/17

  • دوشنبه 21 مرداد 1398
  • 10:49
ببخشید جناب نصیری. بنده چندروزی بود دسترسی به نت نداشتم . امکانش هست به سیستمم وصل بشین؟
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)