يصف هذا القسم الطريقتين المستخدمتين في ASP.NET لتحميل الملفات إلى صفحات الويب.
يتضمن ASP.NET عنصري تحكم يسمحان للمستخدمين بتحميل الملفات إلى خادم الويب. بمجرد أن يقبل الخادم بيانات الملف التي تم تحميلها، يمكن للتطبيق حفظها أو فحصها أو تجاهلها. يسمح عنصر التحكم التالي بتحميل الملف:
HtmlInputFile - التحكم في خادم HTML
FileUpload - التحكم في ويب ASP.NET
يسمح كلا عنصري التحكم بتحميل الملفات، لكن عنصر التحكم FileUpload يقوم تلقائيًا بتعيين تنسيق الترميز، بينما لا يقوم عنصر التحكم HtmlInputFile بذلك.
في هذا البرنامج التعليمي، سوف نستخدم عنصر التحكم FileUpload. يتيح عنصر التحكم هذا للمستخدم معاينة الملف المحدد ليتم تحميله، ويوفر زر معاينة ومربع نص حيث يمكن إدخال اسم الملف.
بمجرد قيام المستخدم بإدخال اسم ملف في مربع النص أو معاينة الملف، يقوم أسلوب SaveAs الخاص بعنصر التحكم FileUpload بحفظ الملف على القرص الثابت.
بناء الجملة الأساسي لـ FileUpload هو كما يلي:
<asp:FileUpload ID= "Uploader" runat = "server" />
فئة FileUpload مشتقة من فئة WebControl وترث جميع عناصرها. تحتوي فئة FileUpload على هذه الخصائص للقراءة فقط:
ملكية | يصف |
---|---|
بايت بايت | إرجاع مجموعة من الرموز الثانوية للملف المراد تحميله |
محتوى الملف | إرجاع كائن الدفق للملف المراد تحميله |
اسم الملف | إرجاع اسم الملف الذي سيتم تحميله |
HasFile | تحديد ما إذا كان عنصر التحكم يحتوي على ملفات لتحميلها |
تم نشر الملف | إرجاع مرجع إلى الملف الذي تم تحميله |
يتم تغليف الملف المنشور في كائن على شكل HttpPostedFile، والذي يمكن الوصول إليه من خلال خاصية PostFile لفئة FileUpload.
تحتوي فئة HttpPostedFile على الخصائص التالية شائعة الاستخدام:
ملكية | يصف |
---|---|
طول المحتوى | إرجاع حجم البايت للملف الذي تم تحميله |
نوع المحتوى | إرجاع نوع MIME للملف الذي تم تحميله |
اسم الملف | قم بإرجاع الاسم الكامل للملف |
تيار الإدخال | إرجاع كائن الدفق للملف المراد تحميله |
يوضح المثال التالي عنصر التحكم FileUpload وخصائصه. يحتوي هذا النموذج على عنصر تحكم FileUpload بالإضافة إلى زر حفظ وعنصر تحكم تسمية باسم الملف الفعلي ونوعه وطوله.
في وضع التصميم، يبدو الجدول كما يلي:
رموز الملفات ذات الصلة مدرجة أدناه:
<body> <form id="form1" runat="server"> <div> <h3> File Upload:</h3> <br /> <asp:FileUpload ID="FileUpload1" runat="server" /> <br /><br /> <asp:Button ID="btnsave" runat="server" onclick="btnsave_Click" Text="Save" /> <br /><br /> <asp:Label ID="lblmessage" runat="server" /> </div> </form></body>
رمز زر الحفظ مدرج أدناه:
protected void btnsave_Click(object sender, EventArgs e){ StringBuilder sb = new StringBuilder(); if (FileUpload1.HasFile) { try { sb.AppendFormat(" Uploading file: {0}", FileUpload1.FileName); //saving the file FileUpload1.SaveAs("<c:\SaveDirectory>" + FileUpload1.FileName); //Showing the file information sb.AppendFormat("<br/> Save As: {0}", FileUpload1.PostedFile.FileName); sb.AppendFormat("<br/> File type: {0}", FileUpload1.PostedFile.ContentType); sb.AppendFormat("<br/> File length: {0}", FileUpload1.PostedFile.ContentLength); sb.AppendFormat("<br/> File name: {0}", FileUpload1.PostedFile.FileName); }catch (Exception ex) { sb.Append("<br/> Error <br/>"); sb.AppendFormat("Unable to save file <br/> {0}", ex.Message); } } else { lblmessage.Text = sb.ToString(); }}
انتبه إلى القضايا التالية:
يتم إنشاء فئة StringBuilder من مساحة الاسم System.IO، لذا يجب تضمينها.
يتم استخدام مناطق المحاولة والالتقاط لاكتشاف الأخطاء وعرض رسائل الخطأ.