PDA

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



Daren_the_Devil
چهارشنبه 03 بهمن 1386, 11:15 صبح
میدونم که در این باره تاپیک های زیادی هست اما من راهی که از همه (به نظر خودم) آسونتر بود رو انتخاب کردم.

1. با این دستور یک عکس (یاهر فایلی)رو به آرایه ای از بایت تبدیل میکنیم.



Dim b AsByte() = My.Computer.FileSystem.ReadAllBytes("E:\sample.jpg")

2. سپس این آرایه رو به فیلدی از نوع Object اینسرت میکنیم.

3. برای بازخوانی هم از دستور زیر استفاده میکنیم.



Dim mem AsNew IO.MemoryStream(b)
pic.Image = Image.FromStream(mem)

MOSTAFANAVVAB
چهارشنبه 08 خرداد 1387, 15:42 عصر
میدونم که در این باره تاپیک های زیادی هست اما من راهی که از همه (به نظر خودم) آسونتر بود رو انتخاب کردم.

1. با این دستور یک عکس (یاهر فایلی)رو به آرایه ای از بایت تبدیل میکنیم.



Dim b AsByte() = My.Computer.FileSystem.ReadAllBytes("E:\sample.jpg")

2. سپس این آرایه رو به فیلدی از نوع Object اینسرت میکنیم.

3. برای بازخوانی هم از دستور زیر استفاده میکنیم.



Dim mem AsNew IO.MemoryStream(b)
pic.Image = Image.FromStream(mem)

__________________________________________________ ____
البته من از این راه نزدیک تر و بفهم تر پیداکردم ولی فراموش کردم

محمدامین شریفی
شنبه 11 خرداد 1387, 20:50 عصر
بهتر نیست منابع را در جای خودش که resource هست بزاریم که مشکل آدرس دهی محلی در رایانه های دیگه پیش نیاد

khz-web1
یک شنبه 12 خرداد 1387, 13:46 عصر
بله بنده هم موافق هستم

parsavb
دوشنبه 13 خرداد 1387, 16:01 عصر
دوستان ببخشید، فضولی من در این تاپیک هم گل کرده
اگه اجازه بدهید نمونه برنامه ای برای ذخیره عکس در دیتابیس براتون بزارم تا شاید این همه سوال و تاپیک بی مورد راجع به این موضوع ساده مطرح نشه
البته این برنامه عکس رو در sql server 2005 ذخیره می کنه و بایستی در بانک خودتون جدولی با 3 فیلد قرار بدهید به نامهاو فرمتهای زیر pic_id=int,pic_name=nvarchar_30,pic_imag=imag
امیدوارم که به دردتون بخوره البته خودتون توش تغییراتی بدین منظم تر میشه من که عجله ای نوشتم و فقط منظورم رسوندن مطلب بود

impossible
شنبه 25 خرداد 1387, 02:19 صبح
خیلی خیلی ممنون ;)

saghari
شنبه 25 خرداد 1387, 13:40 عصر
با سلام
دوستان به این نکته حتما توجه کنن که انتخاب سیاست درست در نحوه دخیره تصاویر در برنامه ها بسیار مهم است. مثلا در سازمان بنادر از یک نرم افزار اتوماسیون استفاده میشد که تصاویر رو درون دیتابیس ذخیره میکرد استفاده میکردن. بعد از دو سال اونقدر حجم بانک بزرگ شد که علی الرغم مناسب بودن امکانات نرم افزار ترجیح دادن از نرم افزار دیگه ای استفاده کنن.
خلاصه توصیه میکنم در انتخاب سیاست صحیح برای ذخیره تصاویر دقت کنید.
من خودم در نرم افزارهایی که نیاز به ذخیره تصاویر با حجم زیاد دارند (مثل اتوماسیون و ...) ، تصاویر رو روی هارد سرور save میکنم و از طریق Webservice اونها رو میخونم اینطوری هم امنیت خوبی داره هم حجم دیتابیس زیاد نمیشه
موفق باشید.

mosavi_M_K
یک شنبه 03 شهریور 1387, 08:31 صبح
با سلام
دوست من چطوري با استفاده از Webservice تصاوير را در ثبت و فراخواني ميكنيد؟

parsavb
یک شنبه 03 شهریور 1387, 10:26 صبح
تو این روش برنامه روی سرور هست و آدرسهای عکسها ذخیره و فراخوانی می شوند و روی کلاینتها یا دیتابیس چیزی ذخیره نمی شود.

programmer.net2009
یک شنبه 30 بهمن 1390, 14:36 عصر
سلام دوستان. من وقی عکس رو توی دیتابیس ذخیره می کنم، می خوام که عکس رو ویرایش کنم اررور میده. من تکه کدهایی که ازش استفاده کردمو می ذارم.
با تشکر


Public Function Convert_Image_From_Byte(ByVal strinput As Byte()) As Image
newMstream = New MemoryStream(CType(strinput, Byte()))
Return Image.FromStream(newMstream)
End Function


Public Function Get_Image_Byte(ByVal StrAddress As String) As Byte()
imgByte = Nothing
stream = New FileStream(StrAddress, FileMode.Open)
reader = New BinaryReader(stream)
imgByte = reader.ReadBytes(stream.Length)
stream.Close()
Return imgByte
End Function


از این کد هم برای گرفتن عکس از دیتابیس استفاده می کنم:

Public Function GetImage_Edit(ByVal strmeli As String) As Byte()
GetImage_Edit = Nothing
resetConnection()
SQL = String.Format("SELECT * FROM tbl_karmand WHERE K_Meli='{0}'", strmeli)
Comm = New SqlClient.SqlCommand(SQL, Cn)
dread = Comm.ExecuteReader
While dread.Read
imgByte = CType(dread.Item(12), Byte())
Return imgByte
End While
End Function


این کد هم برای ویرایش :


Public Function Edit_Karmand(ByVal K_Name As String, ByVal K_Family As String, ByVal K_Tell As String, ByVal K_Mobile As String, ByVal K_Hesab As String, ByVal K_Kart As String, ByVal K_Address As String, ByVal K_Meli As String, ByVal K_Sabeghe As String, ByVal K_Job As String, ByVal K_Hoghogh As String, ByVal K_Admin As String) As Boolean
resetConnection()
SQL = String.Format("UPDATE tbl_karmand SET K_Name='{0}', K_Family='{1}', K_Tell='{2}', K_Mobile='{3}', K_Hesab='{4}', K_Kart='{5}', K_Address='{6}', K_Sabeghe='{8}', K_Job='{9}', K_Hoghogh='{10}', K_Admin='{11}', K_Img='{12}' WHERE K_Meli='{7}'", K_Name, K_Family, K_Tell, K_Mobile, K_Hesab, K_Kart, K_Address, K_Meli, K_Sabeghe, K_Job, K_Hoghogh, K_Admin, "@pic")
Comm.CommandText = SQL
Comm.Parameters.Add("@pic", imgByte)
Comm.CommandType = CommandType.Text
Comm.Connection = Cn
Try
Comm.ExecuteNonQuery()
Comm.Dispose()
Cn.Close()
Return True
Catch ex As Exception

Cn.Close()
Return False
End Try
End Function




این کد هم برای اضافه کردن(که مشکلی نداره)



Public Function Add_Karmand(ByVal K_Name As String, ByVal K_Family As String, ByVal K_Tell As String, ByVal K_Mobile As String, ByVal K_Hesab As String, ByVal K_Kart As String, ByVal K_Address As String, ByVal K_Meli As String, ByVal K_Sabeghe As String, ByVal K_Job As String, ByVal K_Hoghogh As String, ByVal K_Admin As String) As Boolean
resetConnection()

SQL = String.Format("INSERT INTO tbl_karmand (K_Name, K_Family, K_Tell, K_Mobile, K_Hesab, K_Kart, K_Address, K_Meli, K_Sabeghe, K_Job, K_Hoghogh, K_Admin, K_Img) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}', '{11}', @Picture)", K_Name, K_Family, K_Tell, K_Mobile, K_Hesab, K_Kart, K_Address, K_Meli, K_Sabeghe, K_Job, K_Hoghogh, K_Admin)
Comm.CommandText = SQL
Comm.Parameters.Add("@Picture", imgByte)
Comm.CommandType = CommandType.Text
Comm.Connection = Cn
Try
Comm.ExecuteNonQuery()
Comm.Dispose()
Cn.Close()
blnIsImage = False
Return True
Catch ex As Exception
strMessage = ex.Message
Return False
Cn.Close()
End Try
End Function




اگه میشه بگید مشکل از کجاست که خطا میده


راستی. اینم اروری که میده
82914

programmer.net2009
دوشنبه 01 اسفند 1390, 11:01 صبح
کسی نبود کمکم کنه؟!!!!!!!!!

naseri1152
یک شنبه 03 دی 1391, 07:47 صبح
لطفا ذخیره عکس در دیتابیس البته به صورت Webservice که فقط آدرس در دیتابیس ذخیره میشه و خود عکس در شاخه ای به نام pic در سرور ذخیره بشه را با سورس کد بنویسید یکی از بزرگترین مشکل این سایت این است که تمام کدها پشت سر هم میاد و برای جدا کردن آن وقت زیادی را میگیره؟ خواهشا این مشکل برطرف شود. لطفا با سورس کد این مورد را برای ما بگذارید البته با vb.net2010 باشد حتما چون من 2010 نصب دارم تشکر