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

رفع الملفات الى السيرفر

بدأه Slayer666 في 14 سبتمبر 2008 · 1 رد · 1,160 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

تحت شعار (تبا للاسئلة المكرر)ان استفد من هذا الموضوع اتمنى ان تقوم انت ايضا بكتابة موضوع جديد مختلف لزيادة الحماس عند الاعضاء

و تكون المواضيع المفيدة اكثر من الاسئلة

لنبدا ASP .net وضعت لنا اداه مفيدة جدا لرفع الملفات و هي FileUpload

لتسهيل رفع الملفات

لنبدء بسحب هذا الاداة و وضعها على الصفحة

<asp:FileUpload ID="FileUp" runat="server" Width="350" />

الان لنقوم بوضع زر جديد

<asp:Button ID="UpButtton" runat="server" Text="..رفع.." />

و بعد هذا نقوم بوضع Panel

يحتوي على 3 Labels

		<asp:Panel ID="LabelsPanel" runat="server">
			<asp:Label ID="TypeLabel" runat="server"/> <br />
			<asp:Label ID="NewFileName" runat="server" /> <br />
			<asp:Label ID="SizeLabel" runat="server" /> <br />
		</asp:Panel>

ثم Label اخر لكتابة الاخطاء و التنبيهات

<asp:Label ID="ErrorLabel" runat="server" ForeColor="Red" />

الان نذهب الى ال Click Event الخاص بالزر

	 protected void UpButtton_Click(object sender, EventArgs e)
	{
		if (FileUp.PostedFile.ContentLength != 0)
		{
			try
			{
				//نقوم هنا بالتاكد من ان حجم الملف لا يزيد عن 1 ميكا
				//1024 × 1024 = 1 ميكا
				if (FileUp.PostedFile.ContentLength > 1048576)
				{
					ErrorLabel.Text = "حجم الملف اكثر من 1 ميكا";
				}
				else
				{
					//لجلب المسار الكامل للملف
					string DirFullPath = Server.MapPath("./Upload");

					// لجلب اسم الملف فقط
					string fileName = Path.GetFileName(FileUp.PostedFile.FileName);

					//لدمج المسار الكامل مع اسم الملف
					string fileFullPath = Path.Combine(DirFullPath, fileName);

					//لخزن الملف
					FileUp.PostedFile.SaveAs(fileFullPath);
					SizeLabel.Text = "حجم الملف: " + FileUp.PostedFile.ContentLength.ToString();
					TypeLabel.Text = "نوع الملف: " + FileUp.PostedFile.ContentType;
					NewFileName.Text = "اسم الملف: " + FileUp.PostedFile.FileName;
					LabelsPanel.Visible = true;
				}
			}
			catch
			{
				ErrorLabel.Text = "لقد حدث خطأ غير معرف";
			}
		}
	}

هنا استخدمت

  string fileName = Path.GetFileName(FileUp.PostedFile.FileName);

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

ولكن للحماية اكثر سوف نقوم بتغير اسم الملف بالكامل بستخدام ال Guid

سوف افصل هذا الاجراء في فنكشن منفصل

يقوم هذا الفنكشن باعادة المسار الكامل + الاسم الجديد للملف

	  string GetNewName(string DirPath)
		{
			string newFileName = Guid.NewGuid().ToString();
			string fillPath = Path.Combine(DirPath, newFileName);
			return fillPath;
		}

الان سوف اقوم بتعديل الايفنت

   protected void UpButtton_Click(object sender, EventArgs e)
	{
		if (FileUp.PostedFile.ContentLength != 0)
		{
			try
			{
				//نقوم هنا بالتاكد من ان حجم الملف لا يزيد عن 1 ميكا
				//1024 × 1024 = 1 ميكا
				if (FileUp.PostedFile.ContentLength > 1048576)
				{
					ErrorLabel.Text = "حجم الملف اكثر من 1 ميكا";
				}
				else
				{
					//لجلب المسار الكامل للملف
					string DirFullPath = Server.MapPath("./Upload");

					// لجلب الاكستنشن فقط
					string fileExt = Path.GetExtension(FileUp.PostedFile.FileName);

					//لدمج المسار الكامل مع اسم الملف
					string fileFullPath = GetNewName(DirFullPath);

					//لخزن الملف مع اضافة الاكستينشن
					FileUp.PostedFile.SaveAs(fileFullPath + fileExt);

					// هنا للاظهار بعض من المعلومات عن الملف و اسمه الجديد
					SizeLabel.Text = "حجم الملف: " + FileUp.PostedFile.ContentLength.ToString();
					TypeLabel.Text = "نوع الملف: " + FileUp.PostedFile.ContentType;
					NewFileName.Text = "اسم الملف: " + Path.GetFileName(fileFullPath);
					LabelsPanel.Visible = true;
				}
			}
			catch
			{
				ErrorLabel.Text = "لقد حدث خطأ غير معرف";
			}
		}
	}

واقوم باخفاء الLabelsPanel في كل مرة يحدث ال Page.Load()

	protected void Page_Load(object sender, EventArgs e)
	{
		LabelsPanel.Visible = false;

	}

اذا استفدت من الموضوع ارجوا ان تقوم انت ايضا بكتابة موضوج جديد حتى لو كان بسيط (اكتب موضوع عن ال Label Control)

و اي سؤال انا حاضر

AT_FileUploader_sur.zip

تم تعديل هذه المشاركة بواسطة slayer666 في 14 سبتمبر 2008 في 21:52

1
#2

شرح كافى ووافى

بارك الله فيك

byte[][] scores = new byte[5][];
for (int x = 0; x < scores.Length; x++) 
{
   scores[x] = new byte[4];
}

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