PDA

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



hackman
دوشنبه 20 خرداد 1392, 10:54 صبح
سلام من یه برنامه نوشتم که از دوربین مدار بسته عکس میندازه و تو دیتابیس به صورت باینری ذخیره میکنه

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

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

نرم افزار به این صورته که چند تا کامپیوتر به یک سرور وصل میشن و تمام اطلاعات روی اون ذخیره میشه

hackman
دوشنبه 20 خرداد 1392, 12:54 عصر
کووووووووووووووومک

hamid_hr
دوشنبه 20 خرداد 1392, 13:24 عصر
برو از نوع filestreem استفاده كن
http://barnamenevis.org/showthread.php?401515-%D9%86%D8%AD%D9%88%D9%87-%D9%81%D8%B9%D8%A7%D9%84-%D8%B3%D8%A7%D8%B2%D9%8A-%D9%86%D9%88%D8%B9-%D8%AF%D8%A7%D8%AF%D9%87%D9%8A-filestreem-%D9%88-%D9%83%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%A7%D9%8A%D9%86-%D9%86%D9%88%D8%B9-%D8%AF%D8%B1-C

khokhan
دوشنبه 20 خرداد 1392, 14:24 عصر
کووووووووووووووومک


http://stackoverflow.com/questions/1831801/retrieving-images-using-a-file-path-stored-in-a-sql-database

http://www.daniweb.com/software-development/csharp/code/217419/how-to-insertretrieve-image-in-sql-server-database

http://www.dotnetfunda.com/articles/article1551-how-to-retrieve-saved-images-from-sql-server-database-and-show-on-the-page.aspx

http://stackoverflow.com/questions/15870781/retrieve-image-from-sql-server-using-asp-net-web-service

این هم برای استفاده ازStrored Procedures

http://www.codeproject.com/Articles/354639/Storing-and-Retrieving-Images-from-SQL-Server-Usin

hackman
سه شنبه 21 خرداد 1392, 10:02 صبح
http://stackoverflow.com/questions/1831801/retrieving-images-using-a-file-path-stored-in-a-sql-database

http://www.daniweb.com/software-development/csharp/code/217419/how-to-insertretrieve-image-in-sql-server-database

http://www.dotnetfunda.com/articles/article1551-how-to-retrieve-saved-images-from-sql-server-database-and-show-on-the-page.aspx

http://stackoverflow.com/questions/15870781/retrieve-image-from-sql-server-using-asp-net-web-service

این هم برای استفاده ازStrored Procedures

http://www.codeproject.com/Articles/354639/Storing-and-Retrieving-Images-from-SQL-Server-Usin

مرسی ولی اینا کار ساز نیست
سوالمو واضح تر مطرح میکنم

من با این کد از دوربین مدار بسته تحت شبکه عکس میندازم :



public byte[] snapshot( string ip, string user, string pass)
{
byte[] imageByte;

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://" + ip + "/ipcam/jpeg.cgi");
req.Credentials = new NetworkCredential(user, pass);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stm = resp.GetResponseStream();
img = new Bitmap(stm);
stm.Close();
System.IO.MemoryStream MemoryStream = new System.IO.MemoryStream();
img.Save(MemoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);

imageByte = MemoryStream.ToArray();
return imageByte;

}


حالا میخام این عکسی که انداختم تو یه فولدر توی سرور ذخیره کنم و آدرسشو تو دیتابیس بذارم باید چیکار کنم ؟؟؟

hamid_hr
سه شنبه 21 خرداد 1392, 10:24 صبح
اون لينكي كه دادم برا همين بود
از sql server 2008 به بعد يه نوع اودن به نام filestream كه در واقع همون varbinery(max( هستش ولي خودش به صورت خودكار مياد فايلو تو يك پوشه كه تعيين ميكني ميبره و خودش ادرسو تو تيبلت ميزاره و سرعتشم بالاست

hackman
سه شنبه 21 خرداد 1392, 10:33 صبح
اون لينكي كه دادم برا همين بود
از sql server 2008 به بعد يه نوع اودن به نام filestream كه در واقع همون varbinery(max( هستش ولي خودش به صورت خودكار مياد فايلو تو يك پوشه كه تعيين ميكني ميبره و خودش ادرسو تو تيبلت ميزاره و سرعتشم بالاست

میدونم عکسو چه جوری ذخیره کنم

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

چون در روز حدود 2000 تا عکس با حجم 2 مگابایت قراره ذخیره بشه . اگه این حجم اطلاعات داخل دیتابیس باشه .... میترکه

hamid_hr
سه شنبه 21 خرداد 1392, 10:47 صبح
http://dl.nikamooz.com/radionikamooz/RadioNikAmooz-BLOBSQL.mp3
اينو دان كن گوش كن همه چي دستت مياد
فك كنم من نتونم خوب توضيح بدم

xvahid
سه شنبه 21 خرداد 1392, 10:52 صبح
من در پروژه ام نزدیک به 200 هزار عکس دارم که با توجه به اینکه سیستم همیشه آنلاینه از سرویس S3 آمازون استفاده میکنم. به این صورت که هر عکسی که گرفته میشه روی CDN آپلود میشه و URL در دیتابیس ذخیره میشه. سرعت آپلود و دانلود عکسها فقط به سرعت اینترنت بستگی داره. در مورد برنامه شما، اگر میخواین فایل رو بر روی سرور ذخیره کنین خیلی راحته. میتونین از System.IO.File.WriteAllBytes استفاده کنین. فقط در نظر بگیرین اگر تعداد کلاینتهای شما زیاد بشه و بخوان همزمان از یک فایل استفاده کنن سرورتون هر چقدر هم که سریع باشه باز کم میاره. وقتی عکس رو روی S3 آپلود کنین آمازون بصورت اتوماتیک عکس رو روی CloudFront پخش میکنه براتون.

کلاینک های شما چطوری سرور شما رو میبینند؟ تحت LAN هستند یا پروژتون آنلاینه؟ امکان نصب File Server روی سرورتون دارین؟ بسته به سایز پروژتون میتونین از Windows Storage Server استفاده کنین.

hackman
سه شنبه 21 خرداد 1392, 11:20 صبح
من در پروژه ام نزدیک به 200 هزار عکس دارم که با توجه به اینکه سیستم همیشه آنلاینه از سرویس S3 آمازون استفاده میکنم. به این صورت که هر عکسی که گرفته میشه روی CDN آپلود میشه و URL در دیتابیس ذخیره میشه. سرعت آپلود و دانلود عکسها فقط به سرعت اینترنت بستگی داره. در مورد برنامه شما، اگر میخواین فایل رو بر روی سرور ذخیره کنین خیلی راحته. میتونین از System.IO.File.WriteAllBytes استفاده کنین. فقط در نظر بگیرین اگر تعداد کلاینتهای شما زیاد بشه و بخوان همزمان از یک فایل استفاده کنن سرورتون هر چقدر هم که سریع باشه باز کم میاره. وقتی عکس رو روی S3 آپلود کنین آمازون بصورت اتوماتیک عکس رو روی CloudFront پخش میکنه براتون.

کلاینک های شما چطوری سرور شما رو میبینند؟ تحت LAN هستند یا پروژتون آنلاینه؟ امکان نصب File Server روی سرورتون دارین؟ بسته به سایز پروژتون میتونین از Windows Storage Server استفاده کنین.

کلاینت ها تحت LAN هستن

و در مورد این چیزی که گفتین چیزی نمیدونم

و در کل در برنامه ی من به طور همزمان 6 تا کلاینت با هم عکس ذخیره میکنن
این تعداد ثابت نیست و ممکنه مشتریهای مختلف تعداد بیشتری کلاینت بخان

xvahid
سه شنبه 21 خرداد 1392, 11:45 صبح
در این صورت شما از آمازون و Cloud نمیتونید استفاده کنین. برای مشکل شما چندین راه حل هست که بسته به تعداد Client تون و الگوی استفاده اونها از عکسها میتونین از هر کدوم استفاده کینن. منظورم ار الگوی استفاده اینه که آیا امکان داره یهویی در یک ثانیه همشون درخواست یک فایل رو بکنن یا نه؟ عکسها Secure هستن بین Client ها یا نه؟ مثلاً اگر بقیه Client ها عکسهای همدیگه رو ببینن مشکلی داره یا خیر؟ چند تا عکس حدوداً میخواید Server کنین؟

شما میتونین همه رو روی یک Shared UNC بگذارین و به کلاینتها آدرسشو بدین. یا اینکه Storage Server نصب کنین و با API خودش بهش فایل بدین و ازش فایل بگیرین. یا اینکه خیلی راحت همونطور که در پست اول گفتم، فایل رو بنویسین روی دیسک سرور و آدرس فیزیکیش رو بذارین توی دیتابیس. موقع خوندن بخونین (Image.FromFile) و بدید به Client.

انتخاب روش بسته به استفاده شما داره.