.. " Download "..
شرحنا سابقا فى الدرس رقم 16 رفع الملفات الى الموقع
وفى هذا الدرس سوف نتحدث عن تحميل الملفات بانواعها من خلال الموقع
1- استدعاء المكتبة المسئولة عن التعامل مع الملفات والمجلدات والادخال والاخراج وهى
أولا: انشئ Folder بأسم Download Files وضع بداخله الملفات المراد تحميلها كما بالشكل
*************************************
ثانيا: انشئ صفحة على الموقع باسم download.aspx ونذهب مباشرة الى صفحة الكود وهى
download.aspx.cs و نبدأ فى كتابة الكود كالتالى1- استدعاء المكتبة المسئولة عن التعامل مع الملفات والمجلدات والادخال والاخراج وهى
// Using Namespace
using System.IO;
Page_Load2- فى حدث ال
protected void Page_Load(object sender, EventArgs e) { DirectoryInfo directory = new DirectoryInfo(Server.MapPath("~/Download Files")); // تعريف عداد int counter = 0; foreach (FileInfo file in directory.GetFiles()) { //link منه باسم object جديد مع كل ملف واخدنا LinkButton لعمل LinkButton link = new LinkButton(); //counter اسم مختلف باستخدام ال LinkButton لإعطاء كل link.ID = "Link" + counter++; // تحديد النص المكتوب link.Text = file.Name; //download1وهنا صفحة اخرى باسم LinkButton الذى سوف ينتقل اليه عند الضغط على URL ضبط ال //QueryString وهنا سوغ ينتقل مع link.PostBackUrl = "download1.aspx?name=" + file.Name; // Form فى ال LinkButton يضع الاداة Page.Form.Controls.Add(link); // هنا بعطى امر نزول سطر Page.Form.Controls.Add(new LiteralControl(" ")); } }
لنتوف مع هذا الكود
فى البداية عرفنا كائن جديد من نوع DirectoryInfo اسمه directory وحددنا مسار المجلد الذى به ملفات التحميل ..ثم استخدمنا foreach للحصول على كل الملفات داخل المجلد باستخدام الداله ()GetFiles
1- هى الفئة المسئولة عن التعامل مع المجلدات:DirectoryInfo
2- FileInfo:هى الفئة المسئولة عن التعامل مع الملفات
*************************************
ثالثا: انشئ صفحة على الموقع باسم download1.aspx ونذهب مباشرة الى صفحة الكود وهى
download1.aspx.cs و نبدأ فى كتابة الكود كالتالى
Page_Load1- فى حدث ال
protected void Page_Load(object sender, EventArgs e) { //داخل متغير QueryString استقبال string fileName = Request.QueryString["name"].ToString(); // فى حالة عدم تحديد نوع الملف Response.ContentType = "application/octet-stream"; // فى حالة تحديد نوع معين من الملفات للتحميل // *********** OR ********** // //if (fileName.EndsWith(".txt")) //{ // Response.ContentType = "application/txt"; //} //else if (fileName.EndsWith(".pdf")) //{ // Response.ContentType = "application/pdf"; //} //else if (fileName.EndsWith(".docx")) //{ // Response.ContentType = "application/docx"; //} //else //{ // Response.ContentType = "image/jpg"; //} Response.AddHeader("Content-Disposition", "filename=" + fileName); // تحديد المسار واسم الملف المراد تحميلة Response.TransmitFile(Server.MapPath("~/Download Files/" + fileName)); // إنهاء معالجة الاوامر Response.End(); }
لنتوف مع هذا الكود
1- الكائن Response : مسئول عن إرسال المعلومات من خادم الويب إلى المتصفح في جهاز المستخدم وبإمكانه التحكم بها.
2- الخاصية ContentType :هذه الخاصية تفيد مستعرض الويب في معرفة نوع البيانات التي تحتويها الصفحة لتساعده في عرضها للمستخدم بصورة صحيحة.
3- الدالة AddHeader :هذه الدالة ترسل معلومات للمستعرض ولكن ترسلها كرؤوس للصفحة ومن أمثلة هذه المعلومات، معلومات عن تاريخ إنشاء الصفحة واللغة المستخدمة و نوع خادم الويب الذي يعالج الصفحة.
*************************************
**************************************
الى اللقاء فى الدرس القادم ...