الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال عند رفع ملف الى قاعدة البيانات

بدأه sghirziane في 11 يوليو 2010 · 4 رد · 528 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عملية رفع و تنزيل الملفات في قاعدة البيانات تسير على مايرام:

كود رفع ملف الى قاعدة البيانات:

        '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 فهنا اعمل كود الرفع

اما في حالة عدم تحقق الشرط .هنا ارسل رسالة تعلم بالمطلوب..

مع الشكر الجزيل لكل المبرمجين و اعضاء هدا المنتدي الراءع

شكرا للجميع

تم تعديل هذه المشاركة بواسطة sghirziane في 11 يوليو 2010 في 20:55

#2

السلام عليكم ورحمة الله وبركاته

للحصول على نوع الملف المرسل نستخدم

FileUpload1.PostedFile.ContentType

للحصول على امتداد الملف نستخدم

Path.GetExtension(FileUpload1.FileName)

للحصول على حجم الملف المرسل وستكون بالبايت

FileUpload1.PostedFile.ContentLength

كما يمكن تحديد اقصي حد ممكن من حجم الملفات المرفوعة الي السيرفر بشكل عام في الWeb.config

<httpRuntime maxRequestLength="51200"/>

واليك مثال كامل يتحقق من ان الحجم اقل من 50 ميجا ونوع الملفات صور

  if (FileUpload1.HasFile)
    	{
        	if (FileUpload1.PostedFile.ContentLength < 52428800)
        	{
            	string Type = FileUpload1.PostedFile.ContentType;
            	string Extention = Path.GetExtension(FileUpload1.FileName);
            	char spl = '/';
            	string[] type = Type.Split(spl);
            	if (type.Length > 0)
            	{
                	if (type[0] == "image")
                	{
return true;
                	}
                	else
                	{
                                            	return false;
                	}
            	}
            	else
            	{

                	return false;
            	}
        	}
        	else
        	{
            	ErrorMessage = "اكبر من الحجم المطلوب وهو 50 ميجا";
            	return false;
        	}
    	}
    	else
    	{
        	ErrorMessage = "لم تقم بتحديد الملف";
        	return false;
    	}

اللهم ارزقنا فهم النبيين وحفظ المرسلين

Hock341@yahoo.com

الشركة التطبيقية لخدمات الحاسب الالي [حاسب]

http://www.hasib.com.sa

مدونتي

#3

ممتاز وجيد جدا

شرح اكثر من رائع

:)

الشكر الكثير لك ايها الاخ .وبارك الله فيك

اتمنى ان احصل على الاميل الخاص بك للاستفسار :unsure:

#4

لا شكر على واجب اخي

وايميلي موجود بالملف الشخصي الخاص بي

اللهم ارزقنا فهم النبيين وحفظ المرسلين

Hock341@yahoo.com

الشركة التطبيقية لخدمات الحاسب الالي [حاسب]

http://www.hasib.com.sa

مدونتي

#5

رفع ملف الى قاعدة البيانات حجمه اقل او يساوي 4 ميجات تنجح لكن عندما احاول رفع ملف يتجاوز 4 ميجا رسالة خطا:

internet explorer can not display the webpage

مواضيع مشابهة