عملية رفع و تنزيل الملفات في قاعدة البيانات تسير على مايرام:
كود رفع ملف الى قاعدة البيانات:
'code upload
Dim nom As String = FileUpload1.PostedFile.FileName
Dim mem As IO.Stream = FileUpload1.PostedFile.InputStream
Dim arraybyte As Byte() = New Byte(mem.Length) {}
mem.Read(arraybyte, 0, arraybyte.Length)
' identity is a function witch let to increase the id_sujet(id_thread) automaticly
Dim param As Integer = identity("id_Accessoire", "Accessoires")
cmd.CommandText = "insert into Accessoires(id_Accessoire,nom,myfile,id_sujet) values(@id_Accessoire,@nom,@myfile,@id_sujet)"
cmd.Parameters.AddWithValue("@id_Accessoire", param)
cmd.Parameters.AddWithValue("@nom", nom)
cmd.Parameters.AddWithValue("@myfile", arraybyte)
cmd.Parameters.AddWithValue("@id_sujet", 22)
If cnx.State = ConnectionState.Open Then cnx.Close()
cnx.Open()
cmd.ExecuteNonQuery()
cnx.Close()
Response.Write("upload ok")اما كود تنزيل الملف فهو:
'telecharger
cmd.CommandText = " select id_Accessoire,nom,myfile from Accessoires where id_Accessoire=8"
da = New SqlDataAdapter(cmd)
da.Fill(ds, "a")
dt = ds.Tables("a")
Dim arraybyte As Byte() = CType(dt.Rows(0).Item("myfile"), Byte())
Response.ContentType = "Application/Octet-Stream"
Response.AddHeader("Content-Length", arraybyte.Length)
Response.AddHeader("Content-Disposition", "attachment;filename=" & dt.Rows(0).Item("nom"))
Response.BinaryWrite(arraybyte)
Response.Flush()
Response.Close()اما الجدول accessoires او جدول الملحقات بالعربية فيحتوي على:
id_accesoire int nom text myfile image id_sujet int
الكود يعمل بشكل جيد لكنني:
اريد ان اتحقق من نوع الملف قبل رفعه فادا كان (.rar) او (.pdf) او (.txt) او (.jpg) او (.png) او (.Gif) و حجمه لا يتعدى 1Mo فهنا اعمل كود الرفع
اما في حالة عدم تحقق الشرط .هنا ارسل رسالة تعلم بالمطلوب..
مع الشكر الجزيل لكل المبرمجين و اعضاء هدا المنتدي الراءع
شكرا للجميع