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

مشكلة في رفع الملفات File Upload Control

بدأه true dreams في 26 مارس 2009 · 9 رد · 3,097 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عند رفع ملفات باللغة العربية يعني لو ابغى ارفع ملف اسمو السيرة الذاتية.doc تجيني مشكله

ولما ارفع ملف بالانجليزي مثلا CV.doc عادي يترفع

المشكله الثانيه

لو رفعت CV.doc مره ثانيه تجيني مشكله لازم اغير اسم الملف عشان يترفع مره ثانيه .. ايش العمل

شكرا والله يوفق الجميع ويسهل علينا كل الامور

#2

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

أولا لا يفضل ابدا رفع ملفات مكتوب اسمها باللغة العربية..لأن ذلك سيسبب لك الكثير من المشاكل في التحميل...الخ

اما بخصوص رفع ملفات موجودة فأمامك أحد أمرين

إما الكتابة فوق الملف الموجود مسبقا (ببساطة اذا وجد نفس الملف يتم حذفه ووضع الجديد مكانه)

الحل الثاني هو اعادة تسمية الملف الجديد باستخدام دالة تقوم بتوليد أرقام عشوائية واضافتها لاسم الملف وبذلك تحل المشكلة

أتمنى اني اكون افدتك بشئ ولو بسيط

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#3

بسم الله الرحمن الرحيم

لا توجد مشكلة في رفع الملفات باللغة العربية .. عن تجربة شخصية ..

ارني الكود المستخدم للرفع..

تحياتي لك

#4

طيب الله يوفقكم كيف اسوي اعادة تسميه الملف اكتبولي الكود لو تكرمتو C# asp.net

Function الملفات اللي بالعربي ما ادري ليش مره تترفع ومرتين لأ وبالنسبه للكود

FileUpload1.SaveAs(Server.MapPath("Files/" + FileUpload1.FileName));

اتمنى انكم تساعدوني الله يوفقكم شكرا

#5

بسم الله الرحمن الرحيم

اللهم صلي على محمد وآل محمد ..

جرب هذا الكود التالي ..

String MyPicPath;

if (FileUpload1.HasFile)

{

FileUpload1.SaveAs(Server.MapPath(".\\images\\Page_Content\\" + FileUpload1.FileName));

MyPicPath = "images/Page_Content/" + FileUpload1.FileName;

}

هذا الكود الي استخدمه في موقعي .. وهو شغال ,

#6

نفس المشكله لما يكون اسم الملف مكرر يجيني غلط اما لو الملف اسمو مو مكرر فيترفع كويس الحمدلله اظن الطريقه انو نخلي الاسم يتغير كل ما احد يرفع ملف يصير اسمو 1 اللي بعدو 2 بس كيف الطريقه ..

شكرا على محاولتك FUNCTION الله يديك العافيه

شكرا للجميع

#7

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

أخي الكريم كما ذكرت لك يجب التعامل مع الملف الموجود مسبقا بالحذف أو تغيير اسمه أو تغيير إسم الملف الجديد

بمنطق العقل كيف سيتعامل السيرفر مع الملف الموجود مسبقا وأنت لم تقل له ماذا يفعل ؟!!!

لهذا كان أمامك أحد خيارين ويجب أن تختار حسب المطلوب في مشروعك وهذا ما طرحته في المشاركة السابقة

على كل حال

منذ فترة كتبت كود صغير يقوم بتوليد أرقام عشوائية ويضعها ضمن إسم الملف ثم يقوم برفعه وإظهار بعض البيانات عنه

ستجد الكود في المرفقات وإن شاء الله يكون حل مشكلتك

ينقصه فقط أن أجعله يقوم باخراج لينك التحميل بشكل سليم بحيث لا يكون ثابت داخل الكود

والآن الى التحميل والكود في المرفقات

وتمنياتي بالنجاح والتقدم

Upload_Files_with_unique_names.rar

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#8

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

#9

أخي الفاضل true dreams تفضل :

من حسن حظك انني لسا عاملها وبالصدفة إطلعت على سِؤالك انا بعطيك الكود والفكره وأنتا عدل فيها كما تشاء

أنأ لقيت حل لمشكلتلك بس لازم تركز معايا نظره عامه عن الفكرة أنا سويت داتابيس ووضعت جدول فيه عدة حقول الفكره ومافيها انني عند رفع كل ملف أقوم بتخزينه ولكن بزيادة رقم واحد في كل مره . حتى لايحصل معك تعارض وأنا لا أجد أي مشكلة من ناحية اللغة العربية

المهم أنظر الحقولpost-145120-1246531973_thumb.jpg

طيب انظر هذه الدالة انا واضعها في الكلاس لكي لا احتاج عند فتح كوكنشن أن أكتب الأسطر المعروفه لكل مبرمج و لفتح كوكشن والمسار وو... انظر الصوره للدالة

post-145120-1246532350_thumb.jpg

طيب شوف معاي الأكواد التالية وحاولت قدر المستطاع أن أضع شرح أمام كل سطر

protected void Badd_Click(object sender, EventArgs e)
	{// هذا زر الإضافة عند الضغط عليه يتم التالي 
		Adocn.AdoCon();
		string SQLtxt;
		int vidd;
		System.Data.SqlClient.SqlCommand cmd1 = new System.Data.SqlClient.SqlCommand();
		cmd1.CommandType = System.Data.CommandType.Text;
		SQLtxt = "SELECT MAX([vid]) FROM [users_videos] ";
		cmd1.CommandText = SQLtxt;
		cmd1.Connection = Adocn.SQLCon;
		cmd1.ExecuteNonQuery();
		SqlDataReader dr = cmd1.ExecuteReader(CommandBehavior.CloseConnection);
		if (dr.Read() )//vid هنا لزايدة الفديو اي دي بواحد حيث يقوم بالبحث في الحقل 
			vidd = Convert.ToInt32(dr.GetValue(0)) + 1;
		else
			vidd = 1;


		  dr.Close();
		//هنا أنتهينا من جلب أكبر عدد في الداتابيس 
		string  path, fpath,picpath, filev;
	 //pathللمسار داخل جهازك  
		//fpath لدمج ملف الفيديو مع المسار 
		//filev  هذا كما تلاحظ استخدمته مرتين مره لحفظ 
		//الصوره ومره لحفظ الفديو لأني في موقعي مستخدم اثنين  اداة رفع صوره و رفع فيديو

		path = System.AppDomain.CurrentDomain.BaseDirectory;
		filev = Convert.ToString(vidd) + ".gif";
		picpath = path + "\\video\\img\\" + filev;
		filev = Convert.ToString(vidd) + ".flv";
		fpath = path + "\\video\\" + filev;
		//أنتبه هنا قمت فقط بجلب أكبر عدد في الداتابيس وزودته بواحد بنسبه للصوره و  الفيديو
		//كما تلاحظ في صورة الداتابيس 
		Adocn.AdoCon();
		string vdate;//هنا تاريخ رفع الصوره
		string uidd = Request.Cookies["UserName"].Value;
		vdate = Convert.ToString(DateTime.Today.Day) + "-" + Convert.ToString(DateTime.Today.Month) + "-" + Convert.ToString(DateTime.Today.Year);
		System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
		cmd.CommandType = System.Data.CommandType.Text;
		SQLtxt = "INSERT INTO [users_videos]([vid],[userid],[vtitle],[vfile],[catid],[descrip],[vdate],[views],[publish])";
		SQLtxt = SQLtxt + " VALUES ('" + Convert.ToString(vidd) + "','" + uidd + "','" + vtitle.Text + "','" + filev + "','" + Dcatid.SelectedValue + "','" + descrip.Text + "','" + vdate + "','0','0')";
		cmd.CommandText = SQLtxt;
		cmd.Connection = Adocn.SQLCon;//هذا لفتح الكوكشن وهوا محفوظ في كلاس اسمه ادوكن
		cmd.ExecuteNonQuery();
		vfile.SaveAs(fpath);
		picfile.SaveAs(picpath);
		top_table.Rows[0].Cells[1].Text = "<span lang='ar-sa'><font size='4' color='#008000'>نشكرك لقد تم إرسال البيانات وسيتم متابعتها خلال 24 ساعة للنشر </font></span></b></p>";

	}

post-145120-1246532676_thumb.jpg

وبكذ ا أقترن رقم الفيديو مع رقم الصوره مع الملفات المرفوعه في الملفين اللي أنا مسويهم في ال solution explorer طبعا بديهي حتشوف

"\\video\\img\\" + filev;

هذه اسماء الملفات اللي أننا احفظ في الأشياء المرفوعه ولكن في الداتابيس أقرنها بملف

وأنا عار ف أن في حقول زايده ولكن كما قلت لك انني حبيت اساعدك

أما من ناحية الحقول مثل publish و utype فهي عشان أسمح للفيديو المرفوع بأنه يكون منشور او لا وهذا كله طبعا يخص موقعي اللي انا شغال فيه

وهذي معلومة تانية أنا واجهتها ولكن بعد طلوع الروح وجدت الحل وأعطيك ياها على صحن من ذهب وهي إذا كنت تريد أن ترفع ملفات كبيره فلن تستطيع

الا بعد كتابت هذا السطر في صفحة web .config

	<connectionStrings>
  <add name="data_tubeConnectionString1" connectionString="Data Source=MEMOOZZEE\sqlexpress;Initial Catalog=data_video;Integrated Security=True"
   providerName="System.Data.SqlClient" />
 </connectionStrings>
	<system.web>
	<httpRuntime maxRequestLength="2097151"/>

لاحظ تحت ال system.web

httpRunime maxRequest Length =2097151

هذا السطر مهم حتى يبقي البروسر منتظرا حتى بتم الرفع

أرجو أنني أكون أفدتك ولو بالقليل أرجو منك الدعاء لي في ظهر الغيب

وإذا في أي أستفسار أن شاءالله إحنا حاضرين

مع تحيات MEMOOZZEE  ميموو ززي

أسف اذا كان شرحي مش ولابد يعني سئ ولكن قليل من التدقيق يفي بالغرض والكمال لله سبحانه وتعالى

#10

استعمل مكتبة GUID لتوليد أرقام عشوائية طولية المدى

joseph.gif

logo.gif

CCNA 640-802

مدونتي

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